【问题标题】:How to import an excel file in to a MySQL database如何将excel文件导入MySQL数据库
【发布时间】:2010-11-21 13:30:54
【问题描述】:

谁能解释如何将 Microsoft Excel 文件导入 MySQL 数据库?

例如,我的 Excel 表格如下所示:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

【问题讨论】:

  • [你可以看看这个线程][1] 在 MySQL 论坛上。它解释了如何做你想做的事。 [1]:forums.mysql.com/read.php?32,216343,216344#msg-216344
  • 这个免费的实用程序可以快速轻松地将 excel 电子表格导入 mysql 表panofish.net/…
  • +1 表示一个新的和不同的想法。处理速度非常慢,它首先读取文件中的每一行,然后上传任何内容。导入 5.2K 行大约需要 15 分钟
  • 对于某些电子表格,由于列和行的数量,它可能会很慢。但是,我责怪微软的 com-object 库,它是用来读取电子表格的。我的程序以图书馆允许的速度读取电子表格。 mysql 插入速度非常快。如果您可以在导入之前消除不必要的列……那会有所帮助。
  • 我在 5173 行上有 14 列。我已经选择了所有空列/行并将它们删除以避免不必要的处理。我使用的系统有 2.5G RAM 和 core2duo 处理器,没有运行很多进程,性能选项卡显示总共 65% 的使用率,还有很多 RAM 仍未使用。所以,我想我不会责怪硬件,但就像你说的那样,MS com 对象很糟糕。我不知道 MS 什么时候会停止构建看起来像新手救命稻草的垃圾。我厌倦了为 MS 产品做额外的废话。

标签: mysql excel


【解决方案1】:
  1. 将其导出为某种文本格式。最简单的可能是制表符分隔的版本,但 CSV 也可以。

  2. 使用加载数据功能。见http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. 向下看页面的一半,因为它将为制表符分隔数据提供一个很好的示例:

    由 '\t' 终止的字段由 '' 封闭由 '\' 转义

  4. 检查您的数据。有时引用或转义会出现问题,您需要调整源代码、导入命令——或者通过 SQL 进行后处理可能更容易。

【讨论】:

  • 导出为 CSV 时,[至少] excel 2013 积极尝试使用 VBA 转义的双引号来毒化数据,使用与区域设置相关的(基于操作系统区域设置)小数分隔符 0 值(例如 ' ,',同时对所有其他值使用 'as defined in cell properties' 分隔符。最好远离 CSV。
  • 请注意,此过程要求您首先创建具有适当字段的表。
  • 这不是唯一的问题。我不确定此过程是否正确处理 excel 单元格内的回车。甚至从 csv 到 excel 的导入也失败了
  • @afk5min 你说的“毒数据”是什么意思???所有这些标签和标记对于显然要将其导入另一个 MS 产品的用户非常有用......
  • *你的意思是“最难的方法”而不是最简单的
【解决方案2】:

如需使用正确编码将 Excel 2007 导入 MySQL (UTF-8) 的分步示例,请搜索此评论:

“由 Mike Laird 于 2010 年 10 月 13 日上午 12:50 发布”

在下一个网址中:

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

【讨论】:

    【解决方案3】:

    实际上有几种方法可以将 Excel 文件导入 MySQL 数据库,但复杂程度和成功程度各不相同。

    1. Excel2MySQL。毫无疑问,将 Excel 数据导入 MySQL 的最简单、最快捷的方法。它支持所有版本的 Excel,不需要安装 Office。

    2. LOAD DATA INFILE:这个流行的选项可能是最技术性的,需要对 MySQL 命令执行有所了解。您必须在加载和使用适当大小的 VARCHAR 字段类型之前手动创建表。因此,您的字段数据类型未优化。 LOAD DATA INFILE 在导入超过“max_allowed_pa​​cket”大小的大文件时遇到问题。需要特别注意避免导入特殊字符和外来 unicode 字符时出现问题。这是我最近用来导入名为 test.csv 的 csv 文件的示例。

    3. phpMyAdmin:首先选择您的数据库,然后选择导入选项卡。 phpMyAdmin 将自动创建您的表格并调整您的 VARCHAR 字段的大小,但它不会优化字段类型。 phpMyAdmin 无法导入超过 'max_allowed_pa​​cket' 大小的大文件。

    4. MySQL for Excel:这是来自 Oracle 的免费 Excel 插件。这个选项有点乏味,因为它使用向导并且导入速度很慢并且对于大文件有问题,但是对于带有 VARCHAR 数据的小文件,这可能是一个不错的选择。字段未优化。

    【讨论】:

    • 嗨@panofish,我有一个每天更新的excel。我只想将更新的数据放入mysql数据库表而不是整个表。 (即)每天在表格中放入一行。如何做到这一点?
    • 这些解决方案都专注于加载整个电子表格并替换您的 MySQL 表或附加到表中。更改是添加新记录还是更改现有记录?
    • 他们只是覆盖了这些值。但我只希望根据日期附加那些尚未出现在数据库中的值。这可以通过仅添加一些行而不是每天添加很多行来提高性能。
    • Excel2MySQL 工具应该可以只创建数据库脚本 :(
    • PHPMyAdmin 是最简单快捷的。
    【解决方案4】:

    有一个简单的在线工具可以做到这一点,称为sqlizer.io

    你上传一个 XLSX 文件到它,输入工作表名称和单元格范围,它会生成一个 CREATE TABLE 语句和一堆 INSERT 语句来将你的所有数据导入 MySQL 数据库。

    (免责声明:我帮助运行 SQLizer)

    【讨论】:

    • 很高兴知道这个工具的存在,但一定要考虑是否应该使用它。如果您的电子表格包含敏感数据(例如用户电子邮件、密码、抄送信息、医疗信息等),这可能不是一个好主意。该网站可能不会存储您的数据,并且可能是安全的,但您无法确定这一点。
    • @DivyeshJesadiya 最多 5000 行的任何内容都是免费的。之后,您必须为一个月的使用支付 10 美元。
    • @doxsi 对我来说似乎很好,你遇到了什么问题?
    • @ChrisSchmitz 我们对安全性非常谨慎,最近写了一篇关于我们如何操作 SQLizer 的博文blog.sqlizer.io/posts/privacy-at-sqlizer
    • 有效,注意Excel格式,不接受xlt,接受xls。
    【解决方案5】:

    不确定您是否拥有所有这些设置,但对我来说,我使用的是 PHP 和 MYSQL。所以我使用了一个 PHP 类 PHPExcel。这需要几乎任何格式的文件,xls、xlsx、cvs...,然后让您读取和/或插入。

    所以我最终要做的是将 excel 加载到 phpexcel 对象中,然后循环遍历所有行。根据我的需要,我编写了一个简单的 SQL 插入命令,将 excel 文件中的数据插入到我的表中。

    在前端,这有点工作,但它只是调整一些现有代码示例的问题。但是,当您拨打它时,对导入进行更改是简单而快速的。

    【讨论】:

    • PHPExcel最后一个版本,1.8.1,于2015年发布。该项目于2017年正式弃用,并于2019年永久存档
    【解决方案6】:

    在使用文本文件导入数据时,我遇到了引号以及 Excel 如何格式化数字的问题。例如,我的 Excel 配置使用逗号而不是点作为小数分隔符。

    现在我使用 Microsoft Access 2010 将 MySql 表作为链接表打开。在那里,我可以简单地将单元格从 Excel 复制并粘贴到 Access。

    为此,首先安装MySql ODBC driver 并创建一个ODBC connection。 然后在访问中,在“外部数据”选项卡中,打开“ODBC 数据库”对话框并使用 ODBC 连接链接到任何表。

    使用 MySql Workbench,您还可以将 Excel 数据复制并粘贴到 MySql Workbench 的结果网格中。我给出了详细的说明in this answer

    【讨论】:

      【解决方案7】:

      您可以使用DocChow,这是一个用于将 Excel 导入 MySQL 的非常直观的 GIU,它在大多数常见平台(包括 Linux)上都是免费的。

      特别是如果您关心日期、日期时间数据类型,DocChow 可以轻松处理数据类型。如果您正在使用多个 Excel 电子表格,并且您希望将这些电子表格导入到一个 MySQL 表中,DocChow 会完成这项繁琐的工作。

      【讨论】:

        【解决方案8】:

        最好和最简单的方法是使用“MySQL for Excel”应用程序,它是 oracle 的免费应用程序。这个应用程序在 excel 中添加了一个插件来将数据导出和导入到 mysql。你可以从here下载它

        【讨论】:

          【解决方案9】:

          以下是将电子表格数据导入 MySQL 数据库的另一种方法,该方法不依赖于任何额外的软件。假设您要将 Excel 表导入到名为 mydatabase 的 MySQL 数据库的 sales 表中。

          1. 选择相关单元格:

          2. 粘贴到Mr. Data Converter 并选择输出为 MySQL:

          3. 在生成的输出中更改表名和列定义以满足您的要求:

          CREATE TABLE sales (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            Country VARCHAR(255),
            Amount INT,
            Qty FLOAT
          );
          INSERT INTO sales
            (Country,Amount,Qty)
          VALUES
            ('America',93,0.60),
            ('Greece',9377,0.80),
            ('Australia',9375,0.80);
          
          1. 如果您正在使用MySQL Workbench 或已经从命令行登录到mysql,那么您可以直接执行步骤3 中生成的SQL 语句。否则,将代码粘贴到文本文件中(例如,import.sql)并从 Unix shell 执行此命令:

            mysql mydatabase < import.sql

            可以在this Stack Overflow answer 中找到从 SQL 文件导入的其他方法。

          【讨论】:

          • 这是最简单的方法。谢谢!只需记住删除 SQL 中额外的主键“ID”,然后放置一个您选择的 AUTO 增量。
          • 太棒了,迄今为止最简单的解决方案。很棒的发现!
          【解决方案10】:

          第 1 步创建 CSV 文件

          第2步登录你的mysql服务器

               mysql -uroot -pyourpassword 
          

          第 3 步 加载你的 csv 文件

               load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);
          

          【讨论】:

            【解决方案11】:

            另一个有用的工具,作为 MySQL 前端的替代品,是Toad for MySQL。遗憾的是,Quest 不再支持它,而是一个出色的 MySQL IDE,具有 IMPORT 和 EXPORT 向导,可满足大多数文件类型的需求。

            【讨论】:

              【解决方案12】:

              最快最简单的方法是将 XLS 保存为 ODS(打开文档电子表格)并从 PhpMyAdmin 导入

              【讨论】:

                【解决方案13】:

                如果您使用 Toad for MySQL 导入文件的步骤如下:

                1. 在 MySQL 中创建一个与要导入的文件具有相同列的表。
                2. 现在表已创建,转到 > 工具 > 导入 > 导入向导
                3. 现在在导入向导对话框中,单击下一步。
                4. 点击添加文件,浏览并选择要导入的文件。
                5. 选择正确的分隔符。(“,”分隔为 .csv 文件)
                6. 点击下一步,检查映射是否正确。
                7. 点击下一步,选择“单个现有表”单选按钮,同时从表的下拉菜单中选择要映射的表。
                8. 单击下一步并完成该过程。

                【讨论】:

                  【解决方案14】:

                  如果你不喜欢插件、VBA 和外部工具,我有一个 Excel 文件,它使用公式只允许你创建 INSERT/UPDATES。您只需将数据放在单元格上:

                  另外,文件中有另一个选项卡用于创建表:

                  该文件可在以下链接中找到:

                  EXCEL FILE

                  【讨论】:

                    猜你喜欢
                    • 2014-04-11
                    • 2014-03-24
                    • 2013-04-23
                    • 2022-01-05
                    • 2013-04-26
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多