公司进行年终总结,需要对300w客户进行追踪,但是这300w客户的id导入数据库中让我小小纠结了一下。
因为需求部门提给我的是excel的数据格式,所以第一反应是用excel导入,但是sql server2005只支持office 2003的格式,所以只能用xls导入,但是xls一张表只能支持65535条数据,相对于300w条数据来说,需要操作将近50次,太麻烦了。
后来发现一个excel可以导入多个sheet,于是又在一个excel中加入了10个sheet,结果不仅导入过程变慢了,而且多个sheet无法导入一个表中(也许我操作有误,没有继续研究了)。
后来发现用sql语句直接导入:
select * into t# FROM openrowset( 'Microsoft.Jet.OLEDB.4.0', 'EXCEL 5.0;HDR=YES;IMEX=1; DATABASE=d:\kq\salary.xls',Sheet1$)
后来研究了半天,怎么运行都报错,估摸着是我那台电脑上没有装office,但是奇怪的是sql server直接导入就能导入,这样却不行。
最后找啊找,终于找到了bcp命令,而且发现可以用txt的方式导入,发现当时自己真的是脑子一根筋,不知道换个模式,死命去找怎么用excel导入,囧。
在sql server中执行:
EXEC master..xp_cmdshell \'bcp S_HGAD_DBS.dbo.AD_DATA_TAB in d:\test.txt -T -c'
bcp命令简单说明: