帖子分数不多,算是个人这段时间的一个总结吧。当然,问题还是首要的。
问题描述:最近拿到一批CSV数据文件,大小0-500M不等,需要导入到SQL表中。
很自然的,想到了SQL2005中的新增功能 “大容量导入”
关键技术:bcp bulk insert open resources
数据表的格式与CSV的格式完全相同,所有这里选择使用Bulk Insert,代码命令如下:
BULK INSERT Test.dbo.T_test001
FROM 'C:\Users\Bob\Desktop\1.csv'
WITH
(
FIELDTERMINATOR =',',
BATCHSIZE =100000,
FIRSTROW=2
)
这段命令用于导入逗号分隔的CSV文件,设置事务10W,从第二行读取
导入之后,发现数据表中有些字段被截断了。
CSV文件部分内容如下:
------------------------------------------------------------------------------------------------------------------
微博url,微博内容,原创内容
http://t.qq.com/p/t/12345,"中文:你好,再见! English:Hello,Bye!",None
-----------------------------------------------------------------------------------------------------------------
在excel中正确格式截图:
导入数据库之后的格式截图:
可以发现,由于字段的内容中有英文字符,很自然的也就包含了英文逗号,使用BULK INSERT的时候,碰到了英文逗号,就自动截断了字符,造成了错误的显示。
不知道是否有针对性的解决方案,期待大家的回答。分数不多,最后70分全部奉献上。
------解决方案--------------------
FIELDTERMINATOR =','--去掉试试,默认是制表符
------解决方案--------------------
BULK INSERT Test.dbo.T_test001
FROM 'C:\Users\Bob\Desktop\1.csv'
WITH
(
FIELDTERMINATOR =',', --就这儿,用制表符