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命令简单说明:
因为需求部门提给我的是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]"]:指定向表或视图中大容量导入数据时要用到的提示。
相关文章推荐
- SQL Server中bcp命令的用法以及数据批量导入导出
- SQL Server中bcp命令的用法以及数据批量导入导出
- SQL Server中bcp命令的用法以及数据批量导入导出
- SQL Server BCP命令导入、导出数据
- SQL server 数据导入导出BCP工具使用详解
- SQL Server 2005 数据导入导出工具BCP详解
- 存储过程中执行bcp命令将数据导入 并在其他文件服务器上生成log文件
- SQL Server数据导入导出工具BCP详解
- SqlServer 数据的导入导出,使用bcp命令
- SQL server 数据导入导出BCP工具使用详解
- SQL Server数据导入导出工具BCP详解
- SQL Server数据导入导出工具BCP详解
- 在SQL Server的查询分析器中使用命令导入Excel表格中的数据
- BCP命令导入导出数据库数据
- 用BCP命令 导入导出数据
- 数据库中的数据导入导出汇总一(bulk insert命令,bcp命令)
- SQL Server数据导入导出工具BCP详解
- SQL Server数据导入导出工具BCP详解
- 在SQL Server的查询分析器中使用命令导入Excel表格中的数据
- SQL Server数据导入导出工具BCP使用详解