文件中这样的格式数据如何快速读取拆分入库

jms918 2021-04-26 03:50:51
C#窗体

<DATA>
<AA>A,18082,18089,8,0,1,0,AAA,1A, ,20210402,1,1,20334620</AA>
<BB>16,费用,17069690,费用1,9140,费用2,210380,费用3,7290,费用4,1736790</BB>
<CC>516000</CC>
</DATA>

文件中很多这样格式的数据,用什么方法速度最快。谢谢!
...全文
1034 点赞 收藏 22
写回复
22 条回复
xuzuning 04月30日
你是如何产生那些数据的? 逆运算即可
回复 点赞
shawn_yang 04月30日
xml 或者正则都可以
回复 点赞
KnightWelling 04月30日
直接序列化吧,别走那些野路子
回复 点赞
Dear200892 04月30日

DECLARE @xml xml
SET @xml=cast(replace(@xml ,'encoding="UTF-8"','') AS xml)

SELECT IDENTITY(int,1,1) AS RowID,
t.Evt.value('AA[1]','varchar(200)') AS AA,
t.Evt.value('BB[1]','varchar(200)') AS BB,
t.Evt.value('CC[1]','varchar(200)') AS CC
INTO #tmp
FROM @xml.nodes('/DATA') AS t(Evt)
回复 点赞
luj_1768 04月30日
直接使用数据库导入工具,把数据导入数据库系统,然后就可以使用数据库支持的任何方法操作。
回复 点赞
jms918 04月29日
提示还是跟节点重复啊
回复 点赞
Dictator榕湖 04月29日
搜搜 sql xml的用法应该差不多
回复 点赞
jms918 04月28日
htmlagilitypack
回复 点赞
wanghui0380 04月28日
另一个java的 https://my.oschina.net/u/1861837/blog/308632
回复 点赞
wanghui0380 04月28日
看看博客园的java在干啥 https://www.cnblogs.com/yanxiaoge/p/10765674.html
回复 点赞
wanghui0380 04月28日
这样把,我来给个稍微新的东西----------------免得这里总是net不行,net垃圾,net啥都木有。(到不是木有,只是光看博客园的net压根不知道早就有) json,xml这种文件型的半结构数据,处理方式其实很多。linq2xml,xmldocument,----------无数种。 但是早期都面临一个问题,就是文档必须读取完毕,这个都非常讨厌 所以现在json,xml都发展出了流式处理手段。xml的流式处理手段叫SAX,你知道他了随便去nuget搜一下,立刻一大堆(net真没有么?) 比如这个 https://github.com/rasmusjp/sax.net 他每读到一个节点就会直接推给你,至于使用方式你可以直接参照java sax的资料,他的使用方式更java的一样 嘿嘿,没办法,博客园的net眼睛天天就盯着“string”,“血案”压根不会瞧别的,所以资料你只能跟java求了(很奇怪把,博客园的java反而天天就不盯着string,血案,你说奇怪不奇怪!!!!!)
回复 点赞
飞天凤凰601 04月28日
OBX|1|NM|147842^MDC_ECG_HEART_RATE^MDC|1.7.4.147842|81|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000||||00A037009B0006A0^^00A037009B0006A0^EUI-64 OBX|2|NM|148066^MDC_ECG_V_P_C_RATE^MDC|1.7.2.148066|0|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|3|NM|108^MNDRY_ECG_PAUSE_RATE^99MNDRY|1.7.2.108|0|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|4|NM|352^MNDRY_ECG_VPB_RATE^99MNDRY|1.7.2.352|0|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|5|NM|298^MNDRY_ECG_COUPLETS_RATE^99MNDRY|1.7.2.298|0|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|6|NM|299^MNDRY_ECG_MISSED_BEATS_RATE^99MNDRY|1.7.2.299|0|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|7|NM|302^MNDRY_ECG_P_V_C_RonT_RATE^99MNDRY|1.7.2.302|0|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|8|NM|151578^MDC_TTHOR_RESP_RATE^MDC|1.7.1.151578|8|264928^MDC_DIM_RESP_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|9|NM|150456^MDC_PULS_OXIM_SAT_O2^MDC|1.3.1.150456|100|262688^MDC_DIM_PERCENT^MDC|||||R|||20191028110152+0000 OBX|10|NM|149530^MDC_PULS_OXIM_PULS_RATE^MDC|1.3.1.149530|81|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|11|NM|150488^MDC_BLD_PERF_INDEX^MDC|1.3.1.150488|5.51|262688^MDC_DIM_PERCENT^MDC|||||R|||20191028110152+0000 OBX|12|NM|149530^MDC_PULS_OXIM_PULS_RATE^MDC|1.3.1.149530|81|264864^MDC_DIM_BEAT_PER_MIN^MDC|||||R|||20191028110152+0000 OBX|13|NM|151578^MDC_TTHOR_RESP_RATE^MDC|1.7.1.151578|8|264928^MDC_DIM_RESP_PER_MIN^MDC|||||R|||20191028110152+0000 ---------------------------------- 兄弟,我这样的数据,都得入库。 没办法,你只能自己按格式处理
回复 点赞
YBcsdn1996 04月28日
自己写个算法啊 substring (nvarchar, indexof(<AA>),nvarchar.length-indexof(</AA>)) 以此类推
回复 点赞
jms918 04月28日
哦,我表述的有点不清楚了 <DATA> <AA>A,18082,18089,8,0,1,0,AAA,1A, ,20210402,1,1,20334620</AA> <BB>16,费用,17069690,费用1,9140,费用2,210380,费用3,7290,费用4,1736790</BB> <CC>516000</CC> </DATA> 文件中好多这样格式的数据,我要把<AA><BB><CC>中的内容从文件中取出来,赋值到变量即可。文件条数有上百万条
回复 点赞
jms918 04月28日
文件中汉字怎么报错,改成英文就可以读了???
回复 点赞
jms918 04月28日
读取文件中的数据时,提示有多个根元素啊
回复 点赞
wanghui0380 04月28日
引用 4 楼 jms918 的回复:
快来人啊,有什么最佳办法
没人知道你到底想干嘛,所以他们只能回复,建立对象,反序列,load成dataset
回复 点赞
jms918 04月28日
我试一下,没有弄过这个
回复 点赞

string strarr=@"<DATA>
<AA>A,18082,18089,8,0,1,0,AAA,1A, ,20210402,1,1,20334620</AA>
<BB>16,费用,17069690,费用1,9140,费用2,210380,费用3,7290,费用4,1736790</BB>
<CC>516000</CC>
</DATA>";
    DataSet dsData = new DataSet();
    dsData.ReadXml(new XmlTextReader(new StringReader(strarr)));
回复 点赞
jms918 04月28日
快来人啊,有什么最佳办法
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告