从Excel或CSV文件导入

问题描述:

我需要将数据导入到一个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

将问题分解为两个较小的步骤...首先,只执行标准导入数据,并将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

,使其在一个单一的步骤中,您可以使用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