数据导入导出工具BCP详解

 

数据出工具BCP

IT168 文档】bcpSQL 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
表示格式文件名。选项于上述的作,如果使用的是inoutformat_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_cmdshellSQL句的方式运行bcp。如上述第一条命令可改写

EXEC master..xp_cmdshell 'bcp AdventureWorks.sales.currency out c:/currency1.txt  -c  -U"sa" -P"password"'

 

    xp_cmdshell后,返回信息以表的形式出。了可以方便地在SQLbcp,下面的命令都使用xp_cmdshellbcp命令。

    (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.txtcurrency2.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_cmdshellSQL句中行,通过这种方式可以将其放到客端程序中(如delphic#等)运行,也是使客端程序具有数据出功能的方法之一。

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值