• 使用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值插入,而不是这列的默认值。

  • 相关阅读:
    01-SCOTT-SQL建表语句
    面试小题
    Swagger2使用API
    Elasticsearch单机安装_集群搭建_索引基本操作_Head插件安装与基本操作_ik分词器配置_logstash实现数据同步_教程
    45个非常有用的 Oracle 查询语句小结
    oracle获取定时时间段
    彻底理解webservice SOAP WSDL
    MySQL 1045登录失败
    quartz定时任务时间设置
    map 遍历的四种方式
  • 原文地址:https://www.cnblogs.com/wzihan/p/15610577.html
Copyright © 2020-2023  润新知