2012-01-06 50 views
1

我想使用BULK INSERT將幾百個原始數據表加載到SQL Server中。這些表格的格式雖然不相同(它們來自不受版本控制的Excel表格),但它們的格式相似。帶有動態表創建的SQL BULK INSERT

我想知道是否有辦法動態生成SQL Server所需的表,具體取決於要加載的文件中的標題,然後再執行BULK INSERT。

+0

這是否需要在TSQL中完成,或者您是否願意/能夠編寫一些.NET代碼? – kuujinbo 2012-01-06 16:09:12

+0

最好在TSQL,但如果它有,然後我建立一個小的.net應用程序 – Karl 2012-01-09 12:31:04

回答

1

您可以使用OPEN ROWSET連接到這些Excel表格。然後,執行以下操作:

SELECT * 
FROM Excel 
INTO NewTable 
WHERE 0=1 

這將傳輸架構。這是你想要的嗎?

+0

是的,這是有效的。這是否像這樣(在將xls文件轉換爲csv的中間步驟之後 - 這並不是真的必要):SELECT * into NewTable FROM OPENROWSET ('MSDASQL','Driver = {Microsoft Text Driver(* .txt; * .csv)}; DBQ = C:\ FolderName \;','SELECT * from [filename.csv]'); – Karl 2012-01-09 13:45:44

+0

請注意,從電子表格導出的默認類型非常糟糕。此表處於不良狀態。 – usr 2012-01-09 18:27:31

0

您可以創建一個生成用於創建表的sql語句的excel腳本,然後在批量插入數據之前執行該文件。