您的位置:首页 > 数据库

bcp命令导入大量数据到sql server

2014-12-29 11:44 337 查看
公司进行年终总结,需要对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 \'bcpS_HGAD_DBS.dbo.AD_DATA_TAB
in d:\test.txt -T -c'

bcp命令简单说明:

bcp

{[[database_name.][schema].]{table_name | view_name} | "query"}:指定连接的数据库名和表,用于导入导出数据
{in | out | queryout | format} data_file:指定大容量复制的方向及数据文件的完整路径
[-m max_errors]:指定取消 bcp操作之前可能出现的语法错误的最大数目

[-f format_file]:指定格式化文件的完整路径

[-x]:与 format 和 -fformat_file 选项一起使用,可以生成基于 XML 的格式化文件

[-e err_file]:指定错误文件的完整路径,此文件用于存储 bcp实用工具无法从文件传输到数据库的所有行。
[-F first_row]:指定要从表中导出或从数据文件导入的第一行的编号。

[-L last_row]:指定要从表中导出或从数据文件中导入的最后一行的编号。

[-b batch_size]:指定每批导入数据的行数。
[-d database_name]: 指定要连接到的数据库。默认情况下,bcp.exe 连接到用户的默认数据库。

[-n]: 使用数据的本机(数据库)数据类型执行大容量复制操作。

[-c]: 使用字符数据类型执行该操作。

[-N]:执行大容量复制操作时,对非字符数据使用本机(数据库)数据类型的数据,对字符数据使用 Unicode 字符。

[-w]:使用 Unicode 字符执行大容量复制操作。

[-V (70 | 80 | 90 )]:使用 SQL Server 早期版本中的数据类型执行大容量复制操作。
[-q]: 在 bcp实用工具和 SQL Server 实例之间的连接中,执行 SET QUOTED_IDENTIFIERS ON 语句。

[-C { ACP | OEM | RAW | code_page } ]: 指定数据文件中数据的代码页。

[-t field_term]: 指定字段终止符。
[-r row_term]: 指定行终止符。默认值为 /n(换行符)。

[-i input_file]: 指定响应文件的名称

[-o output_file]: 指定文件名称,该文件用于接收从命令提示符重定向来的输出。

[-a packet_size]:指定服务器发出或接收的每个网络数据包的字节数。
[-S [server_name[/instance_name]]]:指定要连接的 SQL Server 实例。

[-U login_id] :指定用于连接到 SQL Server 的登录 ID。

[-P password]:指定登录 ID 的密码。
[-T]: 指定 bcp实用工具通过使用集成安全性的可信连接连接到 SQL Server。不需要网络用户的安全凭据、login_id 和 password。如果未指定 –T,则需要指定 –U 和 –P 才能成功登录。

[-v]: 报告 bcp实用工具的版本号和版权。

[-R]:指定使用客户端计算机区域设置中定义的区域格式,将货币、日期和时间数据大容量复制到 SQL Server 中。

[-k]:指定在操作过程中空列应该保留 null 值,而不是所插入列的任何默认值。

[-E]: 指定导入数据文件中的标识值用于标识列。

[-h"hint [,...n]"]:指定向表或视图中大容量导入数据时要用到的提示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: