手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL Server Bulk Insert 只需要部分字段时的方法
SQL Server Bulk Insert 只需要部分字段时的方法
摘要:根据一般做法的话,导出部分字段时没有办法生成格式化XML文件,所以导入时就没有办法格式化导入数据。我想到两点,1.手工修改格式化XML文件,...

根据一般做法的话,导出部分字段时没有办法生成格式化XML文件,所以导入时就没有办法格式化导入数据。

我想到两点,1.手工修改格式化XML文件,2.创造一个能生成格式化XML文件的中间对象。

在MSDN中寻找方法时,突然想到可以使用视图来做中间对象,于是就搭一个测试下。以下是测试记录:

复制代码 代码如下:

USE master

GO

CREATE DATABASE [db_test]

GO

USE db_test

GO

CREATE TABLE dbo.T_test(

ID [int] IDENTITY(1,1) NOT NULL,

Code varchar(10) ,

Name varchar(100) ,

Memo nvarchar(500) ,

Memo2 ntext ,

PRIMARY KEY (ID)

)

GO

--上面创建的表是源数据表,下面创建是要导入数据的表,只有源表的三个字段

Select Code, Name,Memo into dbo.T_test2 from dbo.T_test Where 1=2

--需求就是把表T_test中的Code,Name导入到T_test2。

--接下来,就是生成导入目标表的格式化XML文件,可是MSDN上说只能生成某个对象的格式化XML文件。

--只好建立一个中间对象来达到目的,这里我创建的是一个视图。

--视图只包含需要导入的字段

Create View v_test

AS

Select Code,Name From dbo.T_test2

--然后就是BCP操作

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 1;

EXEC sp_configure 'show advanced options', 0;

RECONFIGURE;

GO

EXEC master..xp_cmdshell 'BCP db_test.dbo.v_test format nul -f C:/v_test_fmt.xml -x -c -T -S MyPCMyDB'

GO

EXEC master..xp_cmdshell 'BCP "select Code, Name from db_test.dbo.T_test" queryout C:/t_test.data -f C:/v_test_fmt.xml -T -S MyPCMyDB'

GO

--格式化文件和数据文件都有了,就成了.

BULK INSERT db_mgr.dbo.v_t1

FROM N'C:/t_test.data'

WITH

(

FORMATFILE = N'C:/v_test_fmt.xml'

)

GO

EXEC sp_configure 'show advanced options', 1;

RECONFIGURE;

EXEC sp_configure 'xp_cmdshell', 0;

EXEC sp_configure 'show advanced options', 0;

RECONFIGURE;

GO

Drop Database db_test

GO

环境是sql2005。

【SQL Server Bulk Insert 只需要部分字段时的方法】相关文章:

SQL server 2005中设置自动编号字段的方法

sqlserver只有MDF文件恢复数据库的方法

SQL Server 2005支持的两条新语法

SQLServer Top语句参数化方法

SQL Server 2005与sql 2000之间的数据转换方法

SQL Server 表交叉显示及实现方法

SQL Server中统计每个表行数的快速方法

SQL Server2008 数据库误删除数据的恢复方法分享

SQL Server 2005 还原数据库错误解决方法

SQL Server 2005 开启数据库远程连接的方法

精品推荐
分类导航