2014-01-22 18 views
0

我正在使用鏈接服務器將Excel文件導入SQL 2008 R2。列名將始終不同。唯一一致的是文件名和表格名稱。將動態Excel導入SQL 2008 r2

我附上了導入的樣子。 enter image description here

我需要把這些原始數據環比,並導入到表:

INSERT INTO importholding(prodcode, width, height, price) 

prodcode的值會是這樣的「ab30012」(AB + A2 + B1),寬度將爲012,身高爲30,價格爲34.50。這將是表中的一條記錄。

有人能指出我正確的方向嗎?

+0

您可以添加另一個工作表並使用Excel公式來獲取工作表中右側4列(Prod,Width,Height,Price)上的數據嗎? –

+0

如果那是我的全部可能性。你知道解析數據的方法,以便我可以做到嗎? – DigitalMcGrath

回答

0
DECLARE @columns nvarchar(max) 
SELECT @columns = ISNULL(@columns+',','') + QUOTENAME([name]) FROM sys.columns WHERE object_id = OBJECT_ID('MyTable') AND [column_id] > 1 ORDER BY [column_id] 

DECLARE @sql nvarchar(max) 
SET @sql = N'SELECT ''ab''+LTRIM(STR([000]))+REPLACE(STR([b],3),'' '',''0'') AS [prodcode], [000] AS [height], [b] AS [width], [price] FROM MyTable UNPIVOT([price] FOR [b] IN ('[email protected]+')) p' 

INSERT INTO importholding(prodcode, width, height, price) 
EXEC sp_executesql @sql 
+0

感謝您的回覆。你的代碼示例是拋出一個「錯誤的語法附近的'價格'錯誤。任何想法是什麼導致這個? – DigitalMcGrath

+0

哪一行引發錯誤?你是否將'MyTable'更改爲導入表的名稱? – Anon

+0

SSMS說錯誤我認爲錯誤來自於語句的unpivot部分,我將'MyTable'更改爲'Book1 $',這是通過鏈接服務器讀取的Excel電子表格。 – DigitalMcGrath