SQL Server Bulk Insert 只需要部分字段时的方法

 更新时间:2011年10月07日 00:19:37   作者:  
上午在找Bulk Insert的资料看,还转了一篇。不巧今天下午就用上了,我遇到的需求是导出表A中的N个字段,然后导入到表B的N个字段当中。
根据一般做法的话,导出部分字段时没有办法生成格式化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 MyPC\MyDB'
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 MyPC\MyDB'
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中修改“用户自定义表类型”问题的分析与方法

    SQL Server中修改“用户自定义表类型”问题的分析与方法

    这篇文章主要给大家介绍了关于SQL Server中修改“用户自定义表类型”问题的分析与方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • SQL Server无日志恢复数据库(2种方法)

    SQL Server无日志恢复数据库(2种方法)

    SQL Server数据库中的日志文件可能会由于一些突发事件或者失误造成丢失的严重后果,大家都知道,SQL Server数据库中日志文件是很重要的,所以要及时的将丢失的日志文件给找回来。下文就为大家介绍一种恢复数据库日志文件的方法。
    2015-08-08
  • SQLServer 常用语句(按功能分)

    SQLServer 常用语句(按功能分)

    简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。
    2009-08-08
  • Sql Server事务语法及使用方法实例分析

    Sql Server事务语法及使用方法实例分析

    这篇文章主要介绍了Sql Server事务语法及使用方法,结合实例形式分析了Sql Server事务的概念、原理及相关使用技巧,需要的朋友可以参考下
    2019-02-02
  • SQLServer审计功能配置详细图文教程

    SQLServer审计功能配置详细图文教程

    这篇文章主要给大家介绍了关于SQLServer审计功能配置的相关资料,SQL Server 的审计功能可以捕获数据库的活动和事件,包括登录、DDL 和 DML 操作、失败的登录尝试、权限更改等,需要的朋友可以参考下
    2024-01-01
  • 数据库性能优化二:数据库表优化提升性能

    数据库性能优化二:数据库表优化提升性能

    数据库表优化包括:设计规范化表、消除数据冗余、适当的冗余、增加计算列、索引、主键和外键的必要性等等,需要了解的朋友可以参考下
    2013-01-01
  • sqlserver数据库移动数据库路径的脚本示例

    sqlserver数据库移动数据库路径的脚本示例

    前段时间做过这么一件事情,把原本放在c盘的所有数据库(除了sql server系统文件外)文件Move到D盘,主要是为了方便后续管理以及减少磁盘I/O阻塞(C,D是2个独立磁盘)。脚本需输入2个参数:目标数据库名字和目标目录
    2013-12-12
  • 分区表场景下的 SQL 优化

    分区表场景下的 SQL 优化

    这篇文章主要介绍了分区表场景下的 SQL 优化,帮助大家更好的理解和学习SQL,感兴趣的朋友可以了解下
    2020-08-08
  • MSSQL 游标使用 心得

    MSSQL 游标使用 心得

    MS-SQL游标的使用及理解 windows或DOS的“光标”不同,MS-SQL的游标是一种临时的数据库对象,既对可用来旋转储存在系统永久表中的数据行的副本,也可以指向储存在系统永久表中的数据行的指针。
    2009-04-04
  • SQL数据库的高级sql注入的一些知识

    SQL数据库的高级sql注入的一些知识

    这篇文章讨论常用的"sql注入"技术的细节,应用于流行的Ms IIS/ASP/SQL-Server平台。这里探讨有关这种攻击各种可以注入程序访问数据和数据库防范的方法。
    2010-03-03

最新评论