2011-04-10 92 views
2

我需要將數據導入到一個sql表中,在列A中查找行,並將列B和C放入行中,並將其放入特定數據列中。從Excel或CSV文件導入

我的Excel/CSV文件類似於:

Code,Unit,Price 
1234,Pack10,1.20 
4567,Each,3.40 

我的表類似於

ItemID Code Name ItemPrice Unit Supplier LastCost SellBy QtyStock Inactive 

我需要更新在電子表格中的行表中發現的代碼行和更換單位和ItemPrice列。

我曾嘗試使用標準導入數據,但無法看到如何查找代碼,然後插入必填字段。

任何幫助或指向我在哪裏我可以找到答案將不勝感激。

+2

SQL的什麼味道? – 2011-04-10 13:45:00

+0

Sql 2008標準 – RonL 2011-04-10 13:47:43

+0

在Windows中,您可以創建一個ODBC數據源並查詢Excel表格,就好像它是數據庫中的表格一樣。如果您在SQL Sever中創建鏈接的數據源,則可以使用結果作爲插入到select的源。 – 2011-04-10 13:47:53

回答

0

將問題分解爲兩個較小的步驟...首先,只執行標準導入數據,並將excel文件的內容放入SQL表中。導入數據後,只需執行標準的SQL更新語句即可將導入的表和現有的表聯合在一起,以更新現有的表。

UPDATE e 
SET 
    Unit = i.Unit, 
    ItemPrice = i.Price 
FROM 
    ExistingTable e JOIN 
    ImportedTable i ON i.Code = e.Code 
+0

我需要經常這樣做,以便將單位和價格更新爲現有代碼,因此如果可能將文件直接帶到表格中,則希望使用單個導入選項。 – RonL 2011-04-10 13:58:39

+0

導入數據功能是關於插入記錄(導入),而不是更新,所以你必須像@mfredrickson所提到的那樣分割問題 – pcofre 2011-04-10 15:40:24

+0

好的,非常感謝所有回覆 – RonL 2011-04-10 16:06:36

0

,使其在一個單一的步驟中,您可以使用OPENROWSET如下:

UPDATE A 
    SET [ItemPrice] = B.Price, 
     [Unit] = b.Unit 
FROM [SO].[dbo].[PricesTbl] A INNER JOIN 
     OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
     'Excel 8.0;Database=C:\Prices.xls', 'SELECT * FROM [Sheet1$]') B ON A.CODE=B.CODE