`
yizhyi
  • 浏览: 61719 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据导入导出工具BCP详解

阅读更多
IT168 技术文档】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... 105 rows copied. Network packet size (bytes): 4096 Clock Time (ms.) Total : 10 Average : (10500.00 rows per sec.)

    下面是currency1.txt的部分内容

<!---->AED Emirati Dirham 1998-06-01 00:00:00.000 AFA Afghani 1998-06-01 00:00:00.000 ... ... ... ... ... ... ZWD Zimbabwe Dollar 1998-06-01 00:00:00.000

    在使用密码登录时需要将-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 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -c -U"sa" -P"password"'

    bcp还可以通过简单地设置选项对导出的行进行限制。

<!---->EXEC master..xp_cmdshell 'bcp "SELECT TOP 20 * FROM AdventureWorks.sales.currency" queryout c:\currency2.txt -F 10 -L 13 -c -U"sa" -P"password"'

    这条命令使用了两个参数-F 10和-L 13,表示从SELECT TOP 20 * FROM AdventureWorks.sales.currency所查出来的结果中取第10条到13条记录进行导出。 

  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 100 "\t" 2 Name SQL_Latin1_General_CP1_CI_AS 3 SQLCHAR 0 24 "\r\n" 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 10 -L 13 -T'

    在导入数据时可以根据已经存在的格式文件将满足条件的记录导入到数据库中,不满足则不导入。如上述的格式文件中的第三个字段的字符长度是24,如果某个文本文件中的相应字段的长度超过24,则这条记录将不被导入到数据库中,其它满足条件的记录正常导入。

    使用普通的格式文件

<!---->EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -f c:\currency_format1.fmt -T'

    使用xml格式的格式文件

<!---->EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency1 in c:\currency1.txt -F 10 -L 13 -c -x -f c:\currency_format2.fmt -T'

 

总结

    bcp命令是SQL Server提供的一个快捷的数据导入导出工具。使用它不需要启动任何图形管理工具就能以高效的方式导入导出数据。当然,它也可以通过xp_cmdshell在SQL语句中执行,通过这种方式可以将其放到客户端程序中(如delphi、c#等)运行,这也是使客户端程序具有数据导入导出功能的方法之一。

1
分享到:
评论

相关推荐

    SQL_Server数据导入导出工具BCP详解

    SQL Server的BCP(Bulk Copy Program)工具是一个强大的命令行实用程序,用于高效地导入大量数据到SQL Server数据库,或导出数据到...在实际操作中,请根据具体需求灵活应用这些知识,确保数据导入导出过程的顺利进行。

    利用BCP导入导出数据库为文本数据

    ### 利用BCP工具导入导出数据库为文本数据 #### 概述 BCP(Bulk Copy Program)是SQL Server提供的一种批量导入导出数据的工具。它支持将数据库中的表或视图导出到文本文件,或将文本文件的数据导入到数据库中。此...

    BCP命令详解

    BCP 命令是 SQL Server 中负责导入导出数据的一个命令行工具,它是基于 DB-Library 的,并且能以并行的方式高效地导入导出大批量的数据。BCP 命令可以用来将数据从 SQL Server 导出到文本文件中,也可以将数据从文本...

    sql server 中 BCP使用方法详解

    BCP(Bulk Copy Program)是 SQL Server 中负责导入导出数据的一个命令行工具,它是基于 DB-Library 的,并且能以并行的方式高效地导入导出大批量的数据。BCP 可以将数据库的表或视图直接导出,也能通过 SELECT FROM...

    不同类型数据库导入导出

    4. **使用BCP命令行工具导入导出数据**: - 将SQL Server表导出为文本文件或Excel文件: ```sql EXEC master..xp_cmdshell 'bcp "SELECT class_no, kind_no, cn_name FROM new_ks.dbo.kind ORDER BY 1,2" ...

    sybase BCP实用工具详解

    Sybase BCP(Batch Copy Program)是Sybase Adaptive Server Enterprise (ASE) 提供的一个强大的数据导入导出工具,它允许用户将数据批量地从数据库复制到文件,或者从文件复制到数据库,极大地提高了数据处理的效率...

    BCP 大容量数据导入导出工具使用步骤

    ### BCP大容量数据导入导出工具使用步骤详解 #### 一、BCP工具简介 BCP(Bulk Copy Program)是Microsoft SQL Server提供的一种高效的数据导入导出工具,主要用于批量处理大量数据。它支持多种数据格式,如文本文件...

    sybase bcp命令详解

    标题"sybase bcp命令详解"提到了`bcp`命令,这是Sybase数据库管理系统中一个非常重要的数据导入导出工具。它允许用户在数据库与操作系统文件之间批量复制数据,用于数据迁移、备份或数据处理等场景。 描述"bcp ...

    bcp工具Windows

    BCP(Bulk Copy Program)是微软SQL Server提供的一款强大的数据导入导出工具。它允许用户在SQL Server与外部文件之间进行大量数据的快速传输,而无需通过SQL查询或图形界面。在Windows环境中,BCP工具尤其便捷,...

    Sybase bcp工具

    - **单个bcp**: 对于单个表的数据导入导出,bcp工具同样适用。只需指定具体的表名,即可完成单表的数据交换。 ### 三、bcp工具的实现原理 1. **数据流控制**: bcp工具通过读取外部文件中的数据,将其转化为数据库...

    Sybase IQ数据的导入与导出

    ### Sybase IQ 数据的导入与导出...通过以上内容可以看出,Sybase IQ 提供了丰富的数据导入导出功能,用户可以根据实际需求选择合适的方法来进行数据迁移。同时,正确配置各种参数对于确保数据完整性和准确性至关重要。

    bcp命令详解+实例

    bcp 命令是 SQL Server 中的一个命令行工具,负责导入导出数据。它基于 DB-Library,能够以并行的方式高效地导入导出大批量的数据。bcp 命令可以在控制台执行,也可以通过调用 SQL Server 的一个系统存储过程xp_cmd...

    连接导入导出SQL语句大全

    在SQL中,连接导入导出数据是数据库管理中常见的任务,尤其对于开发人员和数据库管理员而言,能够熟练掌握这些操作至关重要。以下是一些关键的SQL语句和方法,用于从不同来源连接、导入和导出数据。 1. **从Excel...

    Sql二进制文件的导入导出

    通过以上步骤,我们可以清晰地看到如何利用存储过程和BCP命令实现SQL二进制文件的自动导入导出功能。这种方式不仅简化了数据处理流程,还提高了效率和准确性。在实际应用中,可以根据具体需求调整存储过程中的逻辑,...

    SQL语句导入导出大全

    ### SQL语句导入导出大全知识点详解 #### 一、SQL语句导入导出概述 在数据库管理过程中,经常需要将数据从一个环境移动到另一个环境。这些操作可以通过多种方式实现,包括但不限于:使用SQL语句进行数据的导入导出...

Global site tag (gtag.js) - Google Analytics