使用BCP导出导入数据

bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数据文件。 除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL 知识。 若要将数据导入表中,必须使用为该表创建的格式文件,或者必须了解表的结构以及对于该表中的列有效的数据类型。

BCP的所有参数:

BCP可以执行的4种操作

(1) 导入 
这个动作使用in命令完成,后面跟需要导入的文件名。 
(2) 导出 
这个动作使用out命令完成,后面跟需要导出的文件名。 
(3) 使用SQL语句导出 
这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。 
(4) 导出格式文件 
这个动作使用format命令完成,后而跟格式文件名。

常用操作:

1. BCP 可信任连接到本地表导出:

用windows认证登陆并把text.dbo.name的表导出到D盘的 t_001.txt

2. BCP 可信任连接到导出查询

3. BCP 可信任连接连到远程服务器导出查询

也可以使用下面的T-SQL命令:

EXEC master..xp_cmdshell ‘BCP  test.dbo.name out d:\t_002.txt -c -t -T‘

EXEC master..xp_cmdshell ‘BCP  "select  name from test.dbo.name" queryout d:\t_004.txt -c -t -T‘

EXEC master..xp_cmdshell ‘BCP tran_test.dbo.uptrans out d:\t_006.txt -c -t -S HOUYAJUN\JHIDCDBS005 -T‘

在执行上述命令的时候可能会报错 : 错误提示:消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行

SQL Server 阻止了对组件 ‘xp_cmdshell‘ 的 过程 ‘sys.xp_cmdshell‘ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘xp_cmdshell‘。有关启用 ‘xp_cmdshell‘ 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。

这个时候需要我们来开启 :

-- 允许配置高级选项
EXEC master.sys.sp_configure ‘show advanced options‘, 1
-- 重新配置
RECONFIGURE
-- 启用xp_cmdshell
EXEC master.sys.sp_configure ‘xp_cmdshell‘, 1
--重新配置
RECONFIGURE  

用完之后再把其关闭,关闭只需要把 1 变为 0 即可。
上面的语句也可以通过输入用户名和密码的形式出来,如下例句:

EXEC master..xp_cmdshell ‘BCP  test.dbo.name out d:\t_008.txt -c -t  -U"sa" -P"ssssaaaa"‘

4. BCP的导入 只需要把上面的 OUT 变为 in 就可以了。

EXEC master..xp_cmdshell ‘BCP  test.dbo.name in d:\t_002.txt -c -t  -U -T‘

这个是对刚才导出的数据进行重新的导入,可以很明显的看到表中的数据已经增加了。

常用参数:

-f format_file 
format_file表示格式文件名。这个选项依赖于上述的动作,如果使用的是in或out,format_file表示已经存在的格式文件,如果使用的是format则表示是要生成的格式文件。

-x 
这个选项要和-f format_file配合使用,以便生成xml格式的格式文件。

-F first_row 
指定从被导出表的哪一行导出,或从被导入文件的哪一行导入。

-L last_row 
指定被导出表要导到哪一行结束,或从被导入文件导数据时,导到哪一行结束。

-c 
使用char类型做为存储类型,没有前缀且以"\t"做为字段分割符,以"\n"做为行分割符。

-w 
和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nchar做为存储类型。

-t field_term 
指定字符分割符,默认是"\t"。

-r row_term 
指定行分割符,默认是"\n"。

-S server_name[ \instance_name] 
指定要连接的SQL Server服务器的实例,如果未指定此选项,BCP连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可。

-U login_id 
指定连接SQL Sever的用户名。

-P password 
指定连接SQL Server的用户名密码。

-T 
指定BCP使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P。

-k 
指定空列使用null值插入,而不是这列的默认值。

https://www.cnblogs.com/zerocc/p/3225723.html

原文地址:https://www.cnblogs.com/shikyoh/p/11089099.html

时间: 2024-11-05 18:41:24

使用BCP导出导入数据的相关文章

BCP导出导入

BCP导出导入大容量数据实践 前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储过程,生成所需的数据文件,甚至可以生成包含SQL语句和数据的脚本文件.各有优缺点,以适用不同的需求.下面介绍大容量数据导出导入的利器——BCP实用工具.同时在后面也介绍BULK INSERT导入大容量数据,以及BCP结合BULK INSERT做数据接口的实践(在SQL2008R2上实践). 1. BCP的用法 BCP 实用工具可以在 Microsoft SQL Server 实

Oracle 导出导入数据

最近用到Oracle导出导入数据,在网上看了别人的一些文章,总结如下: Oracle导出导出有两中方式:一.利用exp imp导出导入:二.利用Oracel数据泵expdp impdp导出导入. 一.利用exp imp导出导入 exp imp 语法如下: exp: 1) 将数据库orcl完全导出 exp system/[email protected] file=d:\orcl_bak.dmp full=y 2) 将数据库中system用户的表导出 exp system/[email prote

导出/导入数据

以下演示了如何导出/导入数据 string file = Server.MapPath("/data.xml"); Code.ProductDataManage.Instance.ExportToFile(file, b => b.Id > 0);//导出到文件 Response.Write("成功导出到文件:" + file); var xml = Code.ProductDataManage.Instance.ExportToXml(b =>

NPOI导出导入数据

注意:以下均为服务器控件 //导入数据 protected void btnImport_Click(object sender, EventArgs e)        {            if (this.fileImport.HasFile)//判断fileImport控件中是否有需要上传的文件            { //判断文件类型是否符合要求                if (Path.GetExtension(this.fileImport.FileName) != "

BCP导出导入大容量数据实践

前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储过程,生成所需的数据文件,甚至可以生成包含SQL语句和数据的脚本文件.各有优缺点,以适用不同的需求.下面介绍大容量数据导出导入的利器——BCP实用工具.同时在后面也介绍BULK INSERT导入大容量数据,以及BCP结合BULK INSERT做数据接口的实践(在SQL2008R2上实践). 1. BCP的用法 BCP 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大

MySQL 之 导出导入数据

导出数据库(sql脚本)  mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p --databases db_name > test_db.sql                 ##得到整个数据库,最全面::不要--databases也行,就是不够信息全面 mysql导出数据库一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p test_db users>

使用 Navicat 8.0 管理mysql数据库(导出导入数据)

http://dxcns.blog.51cto.com/1426423/367105 使用Navicat For MySql 将mysql中的数据导出,包括数据库表创建脚本和数据 (1)数据的导出:右键--->“转储sql文件” 至此,已完成了数据的导出操作. (2)数据的导入:先创建好数据库,这时数据库是空的,接下来我们进行数据导入:选择需要导入数据的数据库名,右键 > 运行批次任务文件 选择刚才我们导出的SQL文件 好,下面我们点开始, 待执行完后,就完成数据导入了

redis-dump导出导入数据

安装redis-dump [sudo] npm install redis-dump -g 导出数据 redis-dump -u 192.168.1.28:6379 >db.json 导入数据 < db.json redis-load

数据泵导出/导入数据

由于在oracle11g之后的某些版本中,采用exp方式导出数据会导致空表被漏掉,解决办法分为两种: 一.对空表进行插入操作,然后再删除数据. 二.采用数据泵的方式导出. 本文介绍第二种方式. 导出: 1.从cmd中以dba权限登录数据库:sqlplus system/密码@orcl as sysdba; 2.创建目录: Create directory TEST as 'd:\test'; 3.授权:Grant read,write on directory TEST to yxf; 4.对应