国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

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

2024-08-31 00:45:33
字體:
來源:轉載
供稿:網友
根據一般做法的話,導出部分字段時沒有辦法生成格式化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。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 迭部县| 新源县| 沁水县| 石首市| 牙克石市| 淮北市| 九龙县| 昌图县| 颍上县| 新民市| 子洲县| 棋牌| 镇巴县| 巴马| 海安县| 会东县| 岗巴县| 长汀县| 武清区| 临潭县| 民乐县| 江安县| 新邵县| 临朐县| 迁西县| 布拖县| 双流县| 斗六市| 衡山县| 东丰县| 天长市| 钟山县| 峨山| 古交市| 景泰县| 穆棱市| 安宁市| 阿鲁科尔沁旗| 观塘区| 广安市| 黔西县|