• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL Server Bulk Insert 只需要部分字段时的方法
    根据一般做法的话,导出部分字段时没有办法生成格式化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。
    您可能感兴趣的文章:
    • mssql server 存储过程里,bulk insert table from ''路径+文件'',路径固定,文件名不固定的实现方法
    • 使用BULK INSERT大批量导入数据 SQLSERVER
    • sql server Bulk Insert命令详细
    上一篇:SQL 判断给定日期值(或时间段)所在星期的星期一和星期天的日期
    下一篇:SQL语句练习实例之三——平均销售等待时间
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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