日期:2014-05-17  浏览次数:20510 次

怎么把一个300万以上的CSV文件导入到SQL数据库表中
CSV文件的内容是以逗号来分隔,然后有6个字段大概是
aa,bb,cc,dd,ee,ff
42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,23432432
42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,23432432
42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,23432432
42222222223432432432,32432432432432432432,2332432432,32432432432,32432432,23432432
这样的数据。
我通过bcp命令导进去
create table xxdd
(
aa nvarchar(1000)
)
bcp sqlwygl..xxdd in D:\datatest\result.csv -c -S(local) -Usa -P123
这样可以导进去只一列以逗号分隔,如果导成多列的话创建表多个字段,就导不进去。

我想问一下有没有办法直接导csv的文件,如果是转成EXCEL的文件的话就算了,光是打开这个文件都会很慢的。
CSV文件 SQL表

------解决方案--------------------
用bulk insert,

bulk insert [目标表]
from '[csv文件]'
with  
( FIELDTERMINATOR =',',  --> 指定分隔符
  ROWTERMINATOR ='\n',
  KILOBYTES_PER_BATCH=5000 )

------解决方案--------------------
引用:
select * from openrowset(bulk 'c:\wc.csv',             --要读取的文件路径和名称                  formatfile='c:\wc.fmt',  --格式化文件的路径和名称                                   firstrow = 2,            --要载入的第一行,由于第一行是标题,所以从2开始                 --lastrow  = 1000,       --要载入的最后一行,此值必须大于firstrow                                   maxerrors = 10,          --在加载失败之前加载操作中最大的错误数                 --errorfile ='c:\wc_error1.txt', --存放错误的文件                                   rows_per_batch = 10000                    --每个批处理导入的行数           ) as t 
我怎么提示服务器: 消息 156,级别 15,状态 1,行 3
在关键字 'bulk' 附近有语法错误。
我的数据库是sql2000


好像这个openrowset(bulk是2005后才引入的,sql server 2000不支持。
修改成这样试试:

bulk insert xxdd
from 'c:\wc.csv'
with  
(
  FIRSTROW = 2,
  FORMATFILE&nb

相关资料更多>