SQL Server BCP使用小结

原文:SQL Server 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 格式化文件]

--不利用格式化文件的导入导出(以下示例皆省略了-S参数,因为是在本机,又是默认实例)
--简单导出表
exec master..xp_cmdshell 'bcp db_oa.dbo.T_User_list  out c:\a.xls -c -T'    --"-T"信任连接
exec master..xp_cmdshell 'bcp db_oa.dbo.T_User_list  out c:\a.txt -c -Usa -Pxxxxx'
--过滤导出表
exec master..xp_cmdshell 'bcp "select top 3 * from db_oa.dbo.t_user_list"  queryout c:\a.txt -c -T'
--简单导入表
exec master..xp_cmdshell 'bcp db_oa.dbo.T_User_list_2  in c:\a.txt -c -T'
exec master..xp_cmdshell 'bcp db_oa.dbo.T_User_list_2  in c:\a.txt -c -T -E'    --加上"-E"启用identity_insert on

--下面是利用XML格式化文件进行数据的导入!
--创建测试表
USE db_oa;
GO
CREATE TABLE myTestFormatFiles (
   Col1 smallint,
   Col2 nvarchar(50),
   Col3 nvarchar(50),
   Col4 nvarchar(50)
   );
GO

--输出XML格式化文件
--说明一下:-t","是指定字段分隔符,稍后我们会讲到
exec master..xp_cmdshell 'bcp db_oa..MyTestFormatFiles format nul -c -t"," -x -f c:\myTestFormatFiles.Xml -T'

/*
格式化后的文件内容如下:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="Chinese_PRC_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="100" COLLATION="Chinese_PRC_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="Col1" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Col2" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Col3" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="Col4" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

这里我们对文件关键字稍作解释:
    <RECORD>父节点中的内容是对源文件的格式化定义,即你要导入的数据文件
        <FIELD ID="1"(这里是源数据字段ID) xsi:type="CharTerm"(字段类型) TERMINATOR=","(字段分隔符) MAX_LENGTH="7"(最大长度)/>
            不难看出,我们最常修改的就是TERMINATOR,可以修改为"|"等你需要的分隔符,注意最后一个字段的分隔符为"\r\n"
    </RECORD>
    <ROW>该父节点的内容是目标数据的格式化定义,即你需要导入数据文件的地方
        <COLUMN SOURCE="1"(这个非常重要,指定的是上面源数据的字段ID,当源数据和目标数据字段顺序或数目不一致时,我们可以修改这里达到我们想要的结果) NAME="Col1"(目标字段名称) xsi:type="SQLSMALLINT"(目标字段类型)/>
    </ROW>
*/
--下面我们创建源数据文件,将以下内容粘贴到我们指定的数据文件C:\myTestFormatFiles-c.txt中
/*
    10,Field2,Field3,Field4
    15,Field2,Field3,Field4
    46,Field2,Field3,Field4
    58,Field2,Field3,Field4
*/
--利用bcp格式化文件导入数据
exec master..xp_cmdshell 'bcp db_oa..myTestFormatFiles in C:\myTestFormatFiles-c.txt -f C:\myTestFormatFiles.Xml -T'
--查看一下导入的数据
select * from myTestFormatFiles
/*
    Col1    Col2    Col3    Col4
    10    Field2    Field3    Field4
    15    Field2    Field3    Field4
    46    Field2    Field3    Field4
    58    Field2    Field3    Field4
*/

--使用BULK INSERT导入数据
USE db_oa;
GO
DELETE myTestFormatFiles;
GO
BULK INSERT myTestFormatFiles 
   FROM 'C:\myTestFormatFiles-c.txt' 
   WITH (FORMATFILE = 'C:\myTestFormatFiles.Xml');
GO
SELECT * FROM myTestFormatFiles;
GO
/*
    Col1    Col2    Col3    Col4
    10    Field2    Field3    Field4
    15    Field2    Field3    Field4
    46    Field2    Field3    Field4
    58    Field2    Field3    Field4
*/

--使用OPENROWSET 大容量行集提供程序导入
USE db_oa;
DELETE myTestFormatFiles;
GO
INSERT INTO myTestFormatFiles
    SELECT *
      FROM  OPENROWSET(BULK  'C:\myTestFormatFiles-c.txt',
      FORMATFILE='C:\myTestFormatFiles.Xml'     
      ) as t1 ;
GO
SELECT * FROM myTestFormatFiles;
GO
/*
    Col1    Col2    Col3    Col4
    10    Field2    Field3    Field4
    15    Field2    Field3    Field4
    46    Field2    Field3    Field4
    58    Field2    Field3    Field4
*/

--删除测试表
DROP TABLE myTestFormatFiles

时间: 2024-09-10 01:55:40

SQL Server BCP使用小结的相关文章

SQL Server bcp 实用工具

server  bcp 实用工具bcp 实用工具在 Microsoft SQL Server 2000 实例和数据文件之间以用户指定的格式复制数据.语法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 f

SQL SERVER调用存储过程小结_MsSql

在SQL Server数据库的维护或者Web开发中,有时需要在存储过程或者作业等其他数据库操作中调用其它的存储过程,下面介绍其调用的方法 一.SQL SERVER中调用不带输出参数的存储过程 SQL 代码 --存储过程的定义 create procedure [sys].[sp_add_product] ( @m_viewcount int = 0 ,@m_hotcount int = 0 ) as go --存储过程的调用 declare @m_viewcount int declare @m

SQL SERVER调用存储过程小结

在SQL Server数据库的维护或者Web开发中,有时需要在存储过程或者作业等其他数据库操作中调用其它的存储过程,下面介绍其调用的方法 一.SQL SERVER中调用不带输出参数的存储过程 SQL 代码 --存储过程的定义 create procedure [sys].[sp_add_product] ( @m_viewcount int = 0 ,@m_hotcount int = 0 ) as go --存储过程的调用 declare @m_viewcount int declare @m

Sql Server 常用命令小结

1.sp_helpdb:报告有关指定数据库或所有数据库的信息.        例: sp_helpdb --显示所有数据库信息(名称.大小等)        例: sp_helpdb Recruitment --显示Recruitment数据库信息(名称.大小等) 2.sp_help:当前数据库中查找对象.        例: sp_help Employee --显示Employee表的结构 小注:          报告有关数据库对象.用户定义数据类型或数据类型的信息. 3.sp_helpt

SQL Server on Linux BCP工具导出RDS SQL Server数据

摘要: SQL Server发布了Linux版本之后,客户增加了一些新需求,总结主要有以下两种: 1.是否支持在Linux操作系统保存,RDS SQL Server的CSV格式文件到文件系统 2.在一台Linux系统的主机同时管理RDS MySQL实例数据和RDS SQL Server数据 需求解读: SQL Server BCP工具可以满足以上需求,这个工具提供了导出CSV格式的文本,可以保存在Linux文件系统,同时也可以方便的讲这个CSV文件导入到RDS MySQL实例或其他支持标准CSV

BCP导出导入 SQL SERVER 大容量数据实践教程

本教程我们介绍大容量数据导出导入的利器--BCP实用工具.同时在后面也介绍BULK INSERT导入大容量数据,以及BCP结合BULK INSERT做数据接口的实践(在SQL2008R2上实践).  1. BCP的用法 BCP 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据.使用 BCP实用工具可以将大量新行导入 SQL Server 表,或将表数据导入数据文件.除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Tran

小结SQL Server连接失败错误的解决

server|错误|解决     在使用 SQL Server 的过程中,用户遇到的最多的问题莫过于连接失败了.一般而言,有以下两种连接 SQL Server 的方式:    一是利用 SQL Server 自带的客户端工具,如企业管理器.查询分析器.事务探查器等.     二是利用用户自己开发的客户端程序,如ASP 脚本.VB程序等,客户端程序中又是利用 ODBC 或者 OLE DB 等连接 SQL Server.下面,我们将就这两种连接方式,具体谈谈如何来解决连接失败的问题.     一.客

小结SQL Server连接失败错误及解决

server|错误|解决 在使用 SQL Server 的过程中,用户遇到的最多的问题莫过于连接失败了.一般而言,有以下两种连接 SQL Server 的方式,一是利用 SQL Server 自带的客户端工具,如企业管理器.查询分析器.事务探查器等:二是利用用户自己开发的客户端程序,如ASP 脚本.VB程序等,客户端程序中又是利用 ODBC 或者 OLE DB 等连接 SQL Server.下面,我们将就这两种连接方式,具体谈谈如何来解决连接失败的问题. 一.客户端工具连接失败 在使用 SQL

SQL Server数据导入导出工具BCP使用详解

BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.本文介绍如何利用BCP导入导出数据. BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.BCP可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出.在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或