这篇文章给大家分享的是有关数据库中如何处理带有引号文本限定符的CVS的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联公司一直通过网站建设和网站营销帮助企业获得更多客户资源。 以"深度挖掘,量身打造,注重实效"的一站式服务,以网站建设、成都网站建设、移动互联产品、全网营销推广服务为核心业务。10余年网站制作的经验,使用新网站建设技术,全新开发出的标准网站,不但价格便宜而且实用、灵活,特别适合中小公司网站制作。网站管理系统简单易用,维护方便,您可以完全操作网站资料,是中小公司快速网站建设的选择。
公司需要导入数据到MSSQLSERVER,但是对方给出的奇葩cvs文件是这样的:
aa,bb,cc,dd,ee
1,"this
is a",1,"this is a",1
2,"this is
" a",2,"this is a",2
普通的bcp处理会有悲催的错位,而且mssql个坑货也不能像MySQL自动区分文本限定符的"
研究了一下,用这个方式处理:
1. 在DB里建立对应的表
此处)折叠或打开
/*generaate thebcp fmt file*/
exec xp_cmdshell 'bcp test.dbo.table_1 format nul -t "," -c -x -f C:\test\table_1.xml -U**** -P**** '
go
3,修改xml,请注意高亮部分。 这个你们用ie来打开的话也可以明确的看到"
此外还有这些特殊字符,大家先备着,万一哪天被不靠谱的猪队友坑了还能用。
单引号是'
双引号是"
&是&
>是>
<是<
空格是 等
点击(此处)折叠或打开
然后再把cvs的首列的标题去掉, 虽说微软说可以通过firstrow来指定第一行,但我之前用了firstrow=2居然是从第二行开始的。
如果不去掉,会报错,由于赶时间,报错测原因和具体原理暂时不考虑再去深入研究了,之后有时间慢慢测。
4. 从cvs里取值,这里我用了openrowset来做验证,其实这个时候也可以直接用bcp加指定 format file来进行导入操作了。
点击(此处)折叠或打开
select * from
openrowset(bulk 'C:\Booker\test.csv', --要读取的文件路径和名称
formatfile='C:\Booker\Table_1.xml', --格式化文件的路径和名称
--fieldterminator='","',
firstrow = 1,--要载入的第一行
--lastrow = 1000, --要载入的最后一行,此值必须大于firstrow
maxerrors = 100, --在加载失败之前加载操作中最大的错误数
--errorfile ='c:\wc_error1.txt', --存放错误的文件
rows_per_batch = 10000 --每个批处理导入的行数
) as t
你需要的结果有了
文本格式下就是这么个东东
aa bb cc dd ee
----------- -------------------------------------------------- ----------- -------------------------------------------------- -----------
1 this,
is, a 1 this is a 1
2 this is
" a 2 this is a 2
感谢各位的阅读!关于“数据库中如何处理带有引号文本限定符的CVS”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!