2014-11-05 211 views
0

我只是试图从Excel文件添加数据到SQL Server。我可以将整个新表格导入,但这意味着我必须重新分配索引。是否可以导入到现有的表格中?从Excel导入数据到SQL Server

只见another question与此类似,我试了一下建议在那里,点击“编写一个查询来指定数据传输”

From this diagram

我进入下面的查询

INSERT INTO Customer (Customer_Id, Customer_Name, Customer_Company, Address, Phone) 
    SELECT 
     A.[Column1], A.[Column2], A.[Column3], A.[Column4], A.[Column5] 
    FROM 
     OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\Excel.xls;HDR=YES', 'select * from [Sheet1$]') AS A; 

我真的不明白它的第二部分的语法..我在FROM子句中出现语法错误。

任何线索?

+1

你有没有考虑过使用SSIS?以这种方式导入Excel Spreadsheet相当容易,而且可能比编写SQL Query更优雅。 – 2014-11-06 01:41:54

+0

@greg从来没有真正想过使用它。因为我无法找到一种方法,我再次创建整个数据库。 :/ – Tsar 2014-11-06 02:13:21

回答

2

从Excel导入数据以进行一次性导入的最简单方法是使用SQL Server导入和导出向导,如问题图片中所示。您应该选择Microsoft Excel作为数据源,指定电子表格的文件路径,并指定第一行是否包含列标题。然后指定目标SQL服务器和数据库。

从图表中选择的其他选项 - “从一个或多个表格或视图中复制数据”。然后,您可以在电子表格中选择要导入的工作表,然后指定要将数据放入的目标表。重要的是,您可以编辑映射,以便电子表格中的数据进入表格中的正确列 - 既可以是现有的表格,也可以是新的表格。在幕后,向导正在为您的问题生成类似的脚本,但如果您正确设置了向导,则不必担心。

从内存中,您还可以将其转换为SSIS包,因此它是一个可重复的过程。

+0

正如我在问题中提到的,问题是我是否可以将excel文件导入到_existing_表中或不是。 现在我选择了“从一个或多个表或视图复制数据”,这意味着我必须将数据导入到新表中,后来我不得不编辑并插入外键和其他索引。问题是关于'写一个查询来指定数据传输'。我在以前的网上找到了在线教程,但不是那个正在寻找的人... – Tsar 2014-11-06 05:08:34

+0

是的,您可以使用此方法将其导入到现有的表格中。您需要考虑的事项有: 1.确保您的数据类型与电子表格相匹配 2.考虑表中存在的主键。 – 2014-11-06 05:19:08

+0

我确保数据名称(excel文件,上行和db中的列名称)匹配。但是数据类型可能不对。我有像“1001”插入到主键的值。 DB把它当作浮点数(当我再次艰苦地完成时)把它当作浮点数来处理,因为我已经在表格中声明了它作为varchar。可能是这个问题,呃? 但是这并不能解释我得到的语法错误(在问题中)。 – Tsar 2014-11-06 05:25:40

2

你可以从sql server中的单元格复制和粘贴excel。 :DD

我现在看到了这个,当时我面临同样的问题。

这是我做过什么:

我从Excel中复制我的数据:enter image description here

接下来在SQL Server中,我为了我的表生成脚本编辑200行:

enter image description here

然后在编辑行的最后一行中,您将超出以下值:

enter image description here

就是这样!易peasy