Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从Excel导入SQL Server_Sql_Sql Server_Excel_Import - Fatal编程技术网

将数据从Excel导入SQL Server

将数据从Excel导入SQL Server,sql,sql-server,excel,import,Sql,Sql Server,Excel,Import,我刚刚尝试将数据从Excel文件添加到SQL Server。我可以导入整个新表,但这意味着我必须再次分配索引。是否可以导入到现有表中 我看到了类似的情况,并尝试了那里的建议,单击“编写查询以指定数据传输” 我输入了以下查询 INSERT INTO Customer (Customer_Id, Customer_Name, Customer_Company, Address, Phone) SELECT A.[Column1], A.[Column2], A.[Column3

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

我看到了类似的情况,并尝试了那里的建议,单击“编写查询以指定数据传输”

我输入了以下查询

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
子句中得到一个语法错误


有什么线索吗?

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

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


您还可以从内存将其转换为SSIS包,使其成为一个可重复的过程。

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

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


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

您只需从sql server中的单元格复制并粘贴excel即可:DD

我现在看到了,当我和你面临同样的问题时

这就是我所做的:

我从excel复制数据:

接下来在sql server中,我命令我的表生成用于编辑200行的脚本:

然后在“编辑行”的最后一行中,您应该超过以下值:


而且。。。就这样!Easy peasy

您只需从sql server中的单元格复制并粘贴excel即可:DD

我现在看到了,当我和你面临同样的问题时

这就是我所做的:

我从excel复制数据:

接下来在sql server中,我命令我的表生成用于编辑200行的脚本:

然后在“编辑行”的最后一行中,您应该超过以下值:


而且。。。就这样!Easy peasy

您考虑过使用SSI吗?以这种方式导入Excel电子表格非常容易,而且可能比编写SQL查询更优雅。@greg以前从未真正想过使用它。由于找不到方法,我又重新创建了整个数据库/您考虑过使用SSI吗?以这种方式导入Excel电子表格非常容易,而且可能比编写SQL查询更优雅。@greg以前从未真正想过使用它。由于找不到方法,我又重新创建了整个数据库/正如我在问题中提到的,问题是我是否可以将excel文件导入到现有表中。。现在我选择了“从一个或多个表或视图复制数据”,这意味着我必须将数据导入到新表中,之后我必须编辑和插入外键和其他索引。问题是关于“编写查询以指定数据传输”。我找到了以前的在线教程,但不是我要找的那个…是的,你肯定可以使用这种方法导入到现有的表中。你需要考虑的事情是:1。确保您的数据类型从电子表格匹配到表2。考虑到表中存在的主键,我确保数据名(excel文件、上面的行和数据库中的列名称)匹配。但数据类型可能不正确。我在主键中插入了像“1001”这样的值。DB将它作为float(当我再次煞费苦心地将它重新做一遍时),正如我在表上声明的那样,它是一个varchar。可能是问题所在,嗯?但这并不能解释我(在问题中)遇到的语法错误…如果您不确定,我会坚持使用向导而不是SQL语法-我只是解析了您的SQL语句,它不会抛出任何错误,因此如果没有更多信息,我不知道。在任何情况下,如果你得到正确的数据类型,那么我的答案应该适合你。我刚刚注意到你对主键的评论-这可能是你问题的根源。我怀疑数据库中的主键是一个标识,您正在尝试向其中插入值。如果它是一个标识列(主键通常是),则不需要这样做,这样您就可以让SQL为您处理它。正如我在问题中提到的,问题是我是否可以将excel文件导入到现有表中。。现在我选择了“从一个或多个表或视图复制数据”,这意味着我必须将数据导入新ta