如何将excel文件导入MySQL数据库

How to import an excel file in to a MySQL database

有人能解释如何将Microsoft Excel文件导入到MySQL数据库吗?

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

1
2
3
4
5
6
7
Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80


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

Screenshot from sqlizer.com

你上传一个XLSX文件,输入一个工作表名和单元格区域,它将生成一个create table语句和一组insert语句,将你的所有数据导入到MySQL数据库中。


  • 将其导出为某种文本格式。最简单的可能是制表符分隔的版本,但csv也可以工作。

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

  • 从页面的中间往下看,它将为制表符分隔的数据提供一个很好的示例:

    由""括起来的由""转义的 '终止的字段

  • 检查你的数据。有时引用或转义有问题,您需要调整源代码、导入命令——或者通过SQL发布进程可能更容易。


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

  • 选择相关单元格:

    enter image description here

  • 粘贴到mr.data converter中,选择输出为mysql:

    enter image description here

  • 更改表名和列定义以满足所生成输出中的需求:

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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);
  • 如果您正在使用MySQLWorkbench,或者已经从命令行登录到mysql,那么您可以直接执行步骤3中生成的SQL语句。否则,将代码粘贴到文本文件(例如,import.sql中)并从unix shell执行此命令:

    mysql mydatabase < import.sql

    从SQL文件导入的其他方法可以在这个堆栈溢出答案中找到。


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

  • Excel2MysQL或Navicat实用程序。完全公开,我是Excel2MysQL的作者。这两个公用事业不是免费的,但它们是最简单的选择,并且有最少的限制。它们还包括其他功能,以帮助将Excel数据导入到MySQL中。例如,Excel2MysQL会自动创建表并自动优化字段数据类型,如日期、时间、浮动等。如果您匆忙或无法获得其他选项来处理数据,则这些实用程序可能适合您的需要。

    screenshot of Excel2MySQL

  • 加载数据:这个流行的选项可能是最技术性的,需要对MySQL命令执行有一些了解。加载前必须手动创建表,并使用大小适当的varchar字段类型。因此,您的字段数据类型没有优化。加载数据内嵌无法导入超过"允许的最大数据包"大小的大型文件。需要特别注意,以避免导入特殊字符和外部Unicode字符时出现问题。下面是我最近用来导入名为test.csv的csv文件的示例。

    enter image description here

  • phpmyadmin:首先选择数据库,然后选择导入选项卡。phpmyadmin将自动创建表并调整varchar字段的大小,但它不会优化字段类型。phpmyadmin无法导入超过"允许的最大数据包"大小的大型文件。

    enter image description here

  • mysql for excel:这是一个来自Oracle的免费Excel加载项。这个选项有点冗长,因为它使用向导,并且导入速度很慢,对于大文件有问题,但对于使用varchar数据的小文件来说,这可能是一个很好的选项。字段未优化。

    enter image description here


  • 不确定您是否拥有所有这些设置,但对于我来说,我使用的是PHP和MySQL。所以我使用了一个php类phpexcel。这将获取几乎任何格式的文件,XLS、XLSX、CVS,…然后让您阅读和/或插入。

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

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


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


    步骤1创建csv文件

    步骤2登录到MySQL服务器

    1
         mysql -uroot -pyourpassword

    步骤3加载csv文件

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

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

    更重要的是,如果您关心日期、日期时间数据类型,docchow很容易处理数据类型。如果您正在处理多个要导入到一个MySQL表中的Excel电子表格,那么docchow会做一些不好的工作。


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

    现在,我使用Microsoft Access 2010将mysql表作为链接表打开。在那里,我只需复制和粘贴Excel中的单元格即可访问。

    为此,首先安装mysql-odbc驱动程序并创建一个odbc连接。然后在Access的"外部数据"选项卡中,打开"ODBC数据库"对话框,并使用ODBC连接链接到任何表。


    有关将Excel2007导入到具有正确编码(UTF-8)的MySQL的分步示例,请搜索此注释:

    "由Mike Laird于2010年10月13日12:50发布"

    在下一个URL中:

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