位置: 编程技术 - 正文

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重命名表名)

  • 租集体土地建厂合法吗
  • 增值税调整 以前签的合同怎么办?
  • 进口关税的计算方式
  • 固定资产改造超过原值多少需要转固
  • 律师事务所的账务流程
  • 不动产净值包括增值税吗
  • 利润表中的其他综合收益
  • 小企业以前年度损益调整科目编码
  • 增值税发票密码忘记了怎么办
  • 个人房产房租收入怎么算
  • 摊余成本加还是减
  • 逾期认证未抵扣的文件
  • 长期待摊费用进项税可以一次性抵扣吗?
  • 怎样冲回多计提的费用
  • 个税中的年金是什么意思
  • 影视发行收入该如何做税收处理?
  • 出售无形资产属于让渡资产使用权吗
  • 增值税清单模板样例导出
  • 小规模纳税人出租房屋增值税税率是多少
  • 打印机第一行未赋码
  • 季度营业额超过6万需要补税
  • 12月的工资啥时候发
  • 预付款税率是多少
  • 个体户怎么申请核定征收
  • 手撕发票怎么报销给单位,怎么打印抬头和日期
  • 以前年度损益调整贷方余额表示什么
  • 基建工程的各项工作包括
  • 工商局查社保吗
  • macbook设置壁纸后开机变回原样
  • 企业增加值的计算
  • 公司流水账是会计做吗
  • PHP:apache_getenv()的用法_Apache函数
  • 担保余值包括
  • 家具折旧费是什么意思
  • ai作画app
  • 基于Python实现五大常用分类算法(原理+代码)
  • 城市维护建设税减免税优惠政策
  • 漏记收入 罚款
  • 已失效是什么意思
  • php验证系统
  • 收入调节方式有哪三种
  • 企业在计提短期借款利息时可能用到的会计科目有
  • 政府会计累计盈余解析
  • 企业都有哪些资质
  • php 多进程
  • 公司对于子公司的股权投资
  • 试分析营改增的重大意义
  • 企业所得税汇算清缴操作流程
  • 投资收益属于什么科目,借贷方向
  • 房地产企业扣除项目
  • 一次性工伤医疗补助金怎么领取
  • 电子承兑汇票如何入账
  • 缴纳的车辆购置税需要计提吗
  • win8创建密码
  • centos6.8配置网络
  • mac u盘启动盘
  • 苹果电脑快捷键截图怎么截
  • windows xp sp3 vl
  • msoobe.exe是什么
  • win10 edge浏览器崩溃
  • win7电脑显示屏显示不全怎么调整
  • window10稳定版
  • win7弹出cmd窗口瞬间消失
  • win7怎么删除wifi已连接过的网络
  • 函数里面声明函数
  • androidtime
  • easyui的表单验证
  • 菜鸟 安卓
  • python各进制符号
  • javascript基础书
  • python的排序方法
  • js函数详解
  • jquery设置滚动条高度
  • python设计内容
  • 公司税务风险情况说明怎么写
  • 个人限购
  • 江西医保缴费怎么交
  • 可以去税务局交医社保吗
  • 河南地税税率怎么计算
  • 大理市国税局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设