【问题标题】:Importing data from Excel to SQL Server将数据从 Excel 导入 SQL Server
【发布时间】:2015-01-02 08:02:27
【问题描述】:

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

我看到another question与此类似,我尝试了那里的建议,点击“编写查询以指定数据传输”

我输入了以下查询

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 子句中遇到语法错误。

有什么线索吗?

【问题讨论】:

  • 你考虑过使用 SSIS 吗?以这种方式导入 Excel 电子表格非常容易,而且可能比编写 SQL 查询更优雅。
  • @greg 以前从未真正想过使用它。由于我找不到方法,我再次创建了整个数据库。 ://

标签: sql sql-server excel import


【解决方案1】:

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

当我面临与您相同的问题时,我现在就看到了。

这就是我所做的:

我从 excel 复制我的数据:

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

然后在编辑行的最后一行,你应该跳过这些值:

然后……就是这样!简单易懂

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 正如我在问题中提到的,问题是我是否可以将 excel 文件导入到 existing 表中。现在我选择了“从一个或多个表或视图中复制数据”,这意味着我必须将数据导入新表,然后我必须编辑和插入外键和其他索引。问题是关于“编写查询以指定数据传输”。我找到了关于以前的在线教程,但不是我正在寻找的那个......
    • 是的,您绝对可以使用此方法导入到现有表中。您需要考虑的事情是: 1. 确保您的数据类型从电子表格到表匹配 2. 考虑表中存在的主键。
    • 我确保数据名称(excel 文件、上一行和 db 中的列名)匹配。但是数据类型可能不正确。我在主键中插入了像“1001”这样的值。 DB 将它作为浮点数拾取(当我煞费苦心地重新做一遍时),正如我在桌子上将它声明为 varchar 一样。可能是问题吧?但这并不能解释我得到的语法错误(在问题中)..
    • 如果您不确定,我会坚持使用向导而不是使用 SQL 语法 - 我只是解析了您的 SQL 语句,它没有抛出任何错误,所以我不知道没有更多信息。无论如何,如果您获得正确的数据类型,那么我的答案应该适合您。
    • 我刚刚注意到您对主键的评论 - 这很可能是您问题的根源。我怀疑数据库中的主键是一个身份,而您正试图将值插入其中。如果它是标识列(通常是主键),则不需要这样做,因此您可以让 SQL 为您处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多