位置: 编程技术 - 正文

sqlserver bcp(数据导入导出工具)一般用法与命令详解(sqlserver dbcc)

编辑:rootadmin
bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据。bcp可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出。在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或将数据库中的数据导出到文件中。下面将详细讨论如何利用bcp导入导出数据。 1. bcp的主要参数介绍 bcp共有四个动作可以选择。 (1) 导入。 这个动作使用in命令完成,后面跟需要导入的文件名。 (2) 导出。 这个动作使用out命令完成,后面跟需要导出的文件名。 (3) 使用SQL语句导出。 这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。 (4) 导出格式文件。 这个动作使用format命令完成,后而跟格式文件名。 下面介绍一些常用的选项: -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值插入,而不是这列的默认值。 2. 如何使用bcp导出数据 (1) 使用bcp导出整个表或视图。 bcp AdventureWorks.sales.currency out c:currency1.txt -c -U"sa" -P"password" --使用密码连接或bcp AdventureWorks.sales.currency out c:currency1.txt -c -T --使用信任连接 下面是上述命令执行后的输出结果 Starting copy... rows copied. Network packet size (bytes): Clock Time (ms.) Total : Average : (. rows per sec.) 下面是currency1.txt的部分内容 AED Emirati Dirham -- ::. AFA Afghani -- ::. ... ... ... ... ... ... ZWD Zimbabwe Dollar -- ::. 在使用密码登录时需要将-U后的用户名和-P后的密码加上双引号。 注:bcp除了可以在控制台执行外,还可以通过调用SQL Server的一个系统存储过程xp_cmdshell以SQL语句的方式运行bcp。如上述第一条命令可改写为 EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency out c:currency1.txt -c -U"sa" -P"password"' 执行xp_cmdshell后,返回信息以表的形式输出。为了可以方便地在SQL中执行bcp,下面的命令都使用xp_cmdshell执行bcp命令。 (2) 对要导出的表进行过滤。 bcp不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数。通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。 EXEC master..xp_cmdshell 'bcp "SELECT TOP * FROM AdventureWorks.sales.currency" queryout c:currency2.txt -c -U"sa" -P"password"' bcp还可以通过简单地设置选项对导出的行进行限制。 这条命令使用了两个参数-F 和-L ,表示从SE EXEC master..xp_cmdshell 'bcp "SELECT TOP * FROM AdventureWorks.sales.currency" queryout c:currency2.txt -F -L -c -U"sa" -P"password"' LECT TOP * FROM AdventureWorks.sales.currency所查出来的结果中取第条到条记录进行导出。3. 如何使用bcp导出格式文件 bcp不仅可以根据表、视图导入导出数据,还可以配合格式文件对导入导出数据进行限制。格式文件以纯文本文件形式存在,分为一般格式和xml格式。用户可以手工编写格式文件,也可以通过bcp命令根据表、视图自动生成格式文件。 EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency format nul -f c:currency_format1.fmt -c -T' 上述命令将currency表的结构生成了一个格式文件currency_format1.fmt,下面是这个格式文件的内容。 9.0 3 1 SQLCHAR 0 6 "t" 1 CurrencyCode SQL_Latin1_General_CP1_CI_AS 2 SQLCHAR 0 "t" 2 Name SQL_Latin1_General_CP1_CI_AS 3 SQLCHAR 0 "rn" 3 ModifiedDate 这个格式文件记录了这个表的字段(共3个字段)类型、长度、字符和行分割符和字段名等信息。 bcp还可以通过-x选项生成xml格式的格式文件。 EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency format nul -f c:currency_format2.fmt -x -c -T' xml格式文件所描述的内容和普通格式文件所描述的内容完全一样,只是格式不同。 4. 如何使用bcp导入数据 bcp可以通过in命令将上面所导出的currency1.txt和currency2.txt再重新导入到数据库中,由于currency有主键,因此我们将复制一个和currency的结构完全一样的表。 SELECT TOP 0 * INTO AdventureWorks.sales.currency1 FROM AdventureWorks.sales.currency 将数据导入到currency1表中 EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:currency1.txt -c -T' 导入数据也同样可以使用-F和-L选项来选择导入数据的记录行。 EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:currency1.txt -c -F -L -T' 在导入数据时可以根据已经存在的格式文件将满足条件的记录导入到数据库中,不满足则不导入。如上述的格式文件中的第三个字段的字符长度是,如果某个文本文件中的相应字段的长度超过,则这条记录将不被导入到数据库中,其它满足条件的记录正常导入。 使用普通的格式文件 EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:currency1.txt -F -L -c -f c:currency_format1.fmt -T' 使用xml格式的格式文件 EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:currency1.txt -F -L -c -x -f c:currency_format2.fmt -T' 总结 bcp命令是SQL Server提供的一个快捷的数据导入导出工具。使用它不需要启动任何图形管理工具就能以高效的方式导入导出数据。当然,它也可以通过xp_cmdshell在SQL语句中执行,通过这种方式可以将其放到客户端程序中(如delphi、c#等)运行,这也是使客户端程序具有数据导入导出功能的方法之一。 bcp命令详解(sybase) bcp 实用工具在 Microsoft SQL Server 实例和数据文件之间以用户指定的格式复制数据。 语法 bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-m max_errors] [-f format_file] [-e err_file] [-F first_row] [-L last_row] [-b batch_size] [-n] [-c] [-w] [-N] [-V ( | | )] [-6] [-q] [-C code_page] [-t field_term] [-r row_term] [-i input_file] [-o output_file] [-a packet_size] [-S server_name[instance_name]] [-U login_id] [-P password] [-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"] 参数 database_name 指定的表或视图所在数据库的名称。如果未指定,则为用户默认数据库。 owner 表或视图所有者的名称。如果执行大容量复制操作的用户拥有指定的表或视图,则 owner 是可选的。如果没有指定 owner 并且执行大容量复制操作的用户不拥有指定的表或视图,则 Microsoft? SQL Server? 将返回错误信息并取消大容量复制操作。 table_name 是将数据复制到 SQL Server 时 (in) 的目的表名,以及从 SQL Server 复制数据时 (out) 的源表名。 view_name 是将数据复制到 SQL Server 时 (in) 的目的视图名,以及从 SQL Server 复制数据时 (out) 的源视图名。只有其中所有列都引用同一个表的视图才能用作目的视图。有关将数据复制到视图的限制的更多信息,请参见 INSERT。 Query 是返回一个结果集的 Transact-SQL 查询。如果查询返回多个结果集,例如指定 COMPUTE 子句的 SELECT 语句,只有第一个结果集将复制到数据文件,随后的结果集被忽略。使用双引号引起查询语句,使用单引号引起查询语句中嵌入的任何内容。在从查询中大容量复制数据时,还必须指定 queryout。 in | out | queryout | format 指定大容量复制的方向。in 是从文件复制到数据库表或视图,out 是指从数据库表或视图复制到文件。只有从查询中大容量复制数据时,才必须指定 queryout。根据指定的选项(-n、-c、-w、-6 或 -N)以及表或视图分隔符,format 将创建一个格式文件。如果使用 format,则还必须指定 -f 选项。 说明 Microsoft SQL Server 6.5 中的 bcp 实用工具不支持大容量复制到包含 sql_variant 或 bigint 数据类型的表。 data_file 大容量复制表或视图到磁盘(或者从磁盘复制)时所用数据文件的完整路径。当将数据大容量复制到 SQL Server 时,此数据文件包含将复制到指定表或视图的数据。当从 SQL Server 大容量复制数据时,该数据文件包含从表或视图复制的数据。路径可以有 1 到 个字符。 -m max_errors 指定在大容量复制操作取消之前可能产生的错误的最大数目。bcp 无法复制的每一行都将被忽略并计为一个错误。如果没有包括该选项,则默认为 。 -f format_file 指定格式文件的完整路径,该格式文件包含以前在同一个表或视图上使用 bcp 时的存储响应。当使用由 format 选项所创建的格式文件大容量复制入或复制出数据时,使用此选项。格式文件的创建是可选的。在提示几个格式问题之后,bcp 将提示是否在格式文件中保存回答。默认文件名为 Bcp.fmt。大容量复制数据时,bcp 可引用一个格式文件,因此不必重新交互输入以前的回答。如果未使用此选项,也没有指定 ?n、-c、-w、-6 或 -N,则 bcp 将提示输入格式信息。 -e err_file 指定错误文件的完整路径,此错误文件用于存储 bcp 无法从文件传输到数据库的所有行。来自 bcp 的错误信息将发送到用户工作站。如果未使用此选项,则不创建错误文件。 -F first_row 指定要大容量复制的第一行的序数。默认值是 1,表示在指定数据文件的第一行。 -L last_row 指定要大容量复制的最后一行的序数。默认值是 0,表示指定数据文件中的最后一行。 -b batch_size 指定所复制的每批数据中的行数。每个批处理作为一个事务复制至服务器。SQL Server 提交或回滚(在失败时)每个批处理的事务。默认情况下,指定的数据文件中的所有数据都作为一批复制。请不要与 -h "ROWS_PER_BATCH = bb" 选项一起使用。 -n 使用数据的本机(数据库)数据类型执行大容量复制操作。此选项不提示输入每一字段,它将使用本机值。 -c 使用字符数据类型执行大容量复制操作。此选项不提示输入每一字段;它使用 char 作为存储类型,不带前缀,t(制表符)作为字段分隔符,n(换行符)作为行终止符。 -w 使用 Unicode 字符执行大容量复制操作。此选项不提示输入每一字段;它使用 nchar 作为存储类型,不带前缀,t(制表符)作为字段分隔符,n(换行符)作为行终止符。不能在 SQL Server 6.5 版或更早版本中使用。 -N 对非字符数据使用数据的本机(数据库)数据类型和对字符数据使用 Unicode 字符类型执行大容量复制操作。这是可替代 -w 选项的性能更高的选项,其目的是使用数据文件将数据从一个 SQL Server 传输到另一个 SQL Server 中。它不提示输入每一字段。在需要传输包含 ANSI 扩展字符的数据以及想利用本机模式的性能时,可以使用这一选项。不能在 SQL Server 6.5 版或更早版本中使用 -N 选项。 -V ( | | ) 使用 SQL Server 早期版本中的数据类型执行大容量复制操作。此选项与字符 (-c) 或本机 (-n) 格式一起使用。此选项并不提示输入每一字段,它使用默认值。例如,若要将 SQL Server 6.5 中的 bcp 实用工具所支持(但 ODBC 不再支持)的日期格式大容量复制到 SQL Server ,可使用 -V 参数。 重要 将数据从 SQL Server 大容量复制到数据文件时,即使指定了 ?V,bcp 实用工具也不会为任何 datetime 或 smalldatetime 数据生成 SQL Server 6.0 或 SQL Server 6.5 的日期格式。日期将始终以 ODBC 格式写入。另外,由于 SQL Server 6.5 版或更早版本不支持可为空的 bit 数据,因此 bit 列中的空值写为值 0。 -6 使用 SQL Server 6.0 或 SQL Server 6.5 数据类型执行大容量复制操作。仅为保持向后兼容性。改为使用 ?V 选项。 -q 在 bcp 实用工具和 SQL Server 实例的连接中执行 SET QUOTED_IDENTIFIERS ON 语句。使用该选项指定包含空格或引号的数据库、所有者、表或视图的名称。将由三部分组成的整个表名或视图名引在双引号 (" ") 中。 -C code_page 仅为保持向后兼容性。作为代替,请在格式文件或交互式 bcp 中为每一列指定一个排序规则名。 指定数据文件中的数据代码页。只有当数据中包含字符值大于 或小于 的 char、varchar 或 text 列时,code_page 才有用。 代码页值 描述 ACP ANSI/Microsoft Windows? (ISO )。 OEM 客户程序使用的默认代码页。如果未指定 -C,则这是 bcp 使用的默认代码页。 RAW 不发生从一个代码页到另一个代码页的转换。因为不发生转换,所以这是最快的选项。 <值> 特定的代码页号码,例如 。 -t field_term 指定字段终止符。默认的字段终止符是 t(制表符)。使用此参数替代默认字段终止符。 -r row_term 指定行终止符。默认的行终止符是 n(换行符)。使用此参数替代默认行终止符。 -i input_file 指定响应文件的名称,使用交互模式(未指定 ?n、-c、-w、-6 或 -N)执行大容量复制时,响应文件包含对每一字段命令提示问题的响应。 -o output_file 指定接收 bcp 输出(从命令提示重定向)的文件的名称。 -a packet_size 指定发送到和发送自服务器的每个网络数据包的字节数。可以使用 SQL Server 企业管理器(或 sp_configure 系统存储过程)设置服务器配置选项。但是,使用此选项可以单个地替代服务器配置选项。packet_size 可以设置为 到 字节,默认值为 。 数据包大小的增加能够提高大容量复制操作的性能。如果要求一个较大的数据包而得不到,则使用默认设置。bcp 生成的性能统计显示出所使用数据包的大小。 -S server_name[instance_name] 指定要连接到的 SQL Server 实例。指定 server_name 以连接该服务器上的 SQL Server 默认实例。指定 server_nameinstance_name 以连接到该服务器上的 SQL Server 命名实例。如果未指定服务器,则 bcp 连接到本地计算机上的 SQL Server 默认实例。从网络上的远程计算机执行 bcp 时,要求此选项。 -U login_id 指定用于连接到 SQL Server 的登录 ID。 -P password 指定登录 ID 的密码。如果未使用此选项,则 bcp 将提示输入密码。如果不带密码将此选项用于命令提示行末尾,则 bcp 将使用默认密码 (NULL)。 -T 指定 bcp 使用网络用户的安全凭据,通过信任连接连接到 SQL Server。不需要 login_id 和 password。 -v 报告 bcp 实用工具的版本号和版权。 -R 指定使用为客户端计算机的区域设置定义的区域格式,将货币、日期和时间数据大容量复制到 SQL Server 中。默认情况下,将会忽略区域设置。 -k 指定在大容量复制操作中空列应保留一个空值,而不是对插入的列赋予默认值。bcp 的一般用法 用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件 [-m 最大错误数] [-f 格式化文件] [-e 错误文件] [-F 首行] [-L 末行] [-b 批大小] [-n 本机类型] [-c 字符类型] [-w 宽字符类型] [-N 将非文本保持为本机类型] [-V 文件格式版本] [-q 带引号的标识符] [-C 代码页说明符] [-t 字段终止符] [-r 行终止符] [-i 输入文件] [-o 输出文件] [-a 数据包大小] [-S 服务器名称] [-U 用户名] [-P 密码] [-T 可信连接] [-v 版本] [-R 允许使用区域设置] [-k 保留空值] [-E 保留标识值] [-h"加载提示"] [-x 生成xml 格式化文件] 导入csv格式文件 Exec master..xp_cmdshell 'bcp "SSIS.dbo.tb2" in "E:export.csv" -c -t"," -r"n" -T' 导出成csv Exec master..xp_cmdshell 'bcp "SSIS.dbo.tb2" out "E:test.csv" -c -t"," -r"n" -T' 将特定查询导出成默认格式 默认以制表符间隔,"n"换行 Exec master..xp_cmdshell 'bcp "select carbrand,longitude from ssis.dbo.tb2" queryout "E:test2.txt" -c -T' 其他情况参考: 启用xp_cmdshell EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE GO

推荐整理分享sqlserver bcp(数据导入导出工具)一般用法与命令详解(sqlserver dbcc),希望有所帮助,仅作参考,欢迎阅读内容。

sqlserver bcp(数据导入导出工具)一般用法与命令详解(sqlserver dbcc)

文章相关热门搜索词:sqlserver bcp导入,sqlserver bcp导入,sqlserver dbcc,sqlserver bcp命令,sqlserver dbcc,sql server blob,sql server blob,sql server blob,内容如对您有帮助,希望把文章链接给更多的朋友!

重命名SQLServer数据库的方法 企业管理器中没有改数据库名的功能,如果一定要用企业管理器来实现,你可以备份数据库,然后还原,在还原时候可以指定另一个库名,然后再删除

SQL Server中通过reverse取某个最后一次出现的符号后面的内容(字符串反转) sql语句reverse(substring(reverse(Path),1,charindex('/',reverse(Path))-1))SQL如何取出一个字符串中最后一个特殊字符右边的字符,例如:**,怎样得到?使用rever

使用SqlBulkCopy时应注意Sqlserver表中使用缺省值的列 SqlBulkCopy来自数据源的String类型的给定值不能转换为指定目标列的类型nvarchar。在网上找了下,大都说是因为数据库中的字段过小(来自数据源的String类

标签: sqlserver dbcc

本文链接地址:https://www.jiuchutong.com/biancheng/348139.html 转载请保留说明!

上一篇:在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名(在SQL Server中使用存储过程的优点包括)

下一篇:重命名SQLServer数据库的方法(sqlserver重命名表名)

  • 税务金三系统是什么?
  • 增值税发票查询网络异常
  • 减少实收资本需要缴纳什么税
  • 小微企业增值税减免政策
  • 2020年建筑企业税收优惠政策
  • 公司购个人的二手车流程
  • 短期借款可以按币种设置明细核算
  • 专利捐献
  • 跨年度销售费用如何调账
  • 销售货物并收取运费税率
  • 按税收规定计算的扣除额公益性捐赠
  • 支付证明单打印版
  • 积累与消费比例怎么计算
  • 银行直接扣的手续费怎么记账
  • 购销行为是什么
  • 红字发票如果开多了下个月能进行抵扣么?
  • 小规模企业转为一般纳税人怎么做会计分录
  • 电费的税费计入什么会计科目
  • 小规模纳税人销售收入会计分录
  • 清算结业是什么意思
  • 工业企业预付材料款时一般应借记什么账户
  • 公司租赁汽车
  • 个人所得汇算清缴是什么
  • win11如何在开机的时候进入安全模式
  • qq游戏怎么玩不了怎么回事
  • win10更新kb5006670
  • 在win7中,当前窗口的数量是多少个
  • php utf8转gb2312
  • php留言板的简单编写
  • 公司注销不清算可以吗
  • windows11怎么设置锁屏时间
  • 小微企业减免额怎么计算
  • 担保损失会计分录
  • 偷税漏税的会计要负什么责任
  • msoxmled.exe是什么软件
  • el-tree方法
  • 工程项目会计怎么样
  • 热带雨林瀑布群雪野
  • 两险征缴工作的意义
  • diffusion扩散模型训练时间
  • uniapp中uni.navigateTo传递变量
  • openprop教程
  • 各行业税点大全最新
  • 外资企业是否属于国企
  • sql2008还原到2012
  • 利润总额包括的内容主要有
  • sql server存储过程写法
  • 可以抵扣的进项发票有哪些
  • 以前年度损益科目编码
  • 存货跌价准备是什么意思
  • 长期待摊费用进项税分录
  • 应该是先付款还是先开发票
  • 可以抵扣土地增值税的项目
  • 将外购商品作为非货币
  • 预付款为什么不能抵消工程款
  • 退货开负数发票的情况该如何做会计处理?
  • 会计处理是会计分录吗
  • mysql工作内容
  • sql合并字段
  • windows10x预览版
  • linux服务端
  • 苹果mac升级系统
  • FreeBSD su Sorry问题解决办法
  • cmd命令符大全
  • 影响电脑速度的因素
  • fpd文件是什么意思
  • windows批处理命令教程
  • Python常用时间操作总结【取得当前时间、时间函数、应用等】
  • unityplayer安卓
  • js indexof 对象
  • linux shell实战
  • python如何查询函数用法
  • javascript数据类型有哪些
  • javascript 代码
  • First Class: UI of Android
  • 海关编码查询 商品编码查询
  • 车票进项税怎么认证
  • 长沙市社保中心主任
  • 苏州相城离苏州市区有多远
  • 地税局属于国家公务员吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设