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


88

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

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

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

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

[您可以在MySQL论坛上查看此线程] [1]。它说明了如何准确地执行您想要的操作。[1]:forums.mysql.com/read.php?
32,216343,216344

1
这个免费的实用程序可以快速,轻松地将excel电子表格导入mysql表panofish.net/…– panofish 2013
6

+1提出新的想法。处理过程异常缓慢,它首先读取文件中的每一行,然后上传任何内容。导入5.2K行花了大约15分钟
Fr0zenFyr 2013年

对于某些电子表格,由于列和行的数量,它可能会变慢。但是,我怪微软的com-object库是用来读取电子表格的。我的程序以库允许的最快速度读取电子表格。mysql插入非常快。如果您可以在导入之前消除不必要的列,那将会有所帮助。
panofish

我在5173行上有14列。我已经选择了所有空列/行并删除了它们,以避免不必要的处理。我正在使用的Sytem具有2.5G RAM和core2duo处理器,没有运行太多的进程,“性能”选项卡显示全部使用65%,并且仍有大量RAM未使用。因此,我想我不会怪硬件,但是就像您说的那样,MS com对象很烂。。我不知道MS何时会停止构建看起来像初学者的救命稻草的垃圾。我讨厌为MS产品做些废话。
Fr0zenFyr 2014年

Answers:


46
  1. 将其导出为某种文本格式。最简单的可能是制表符分隔的版本,但是CSV也可以使用。

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

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

    以'\ t'终止的字段''''以'\'结束

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


2
导出为CSV时,[至少] Excel 2013会主动尝试使用VBA转义的双引号,使用与语言环境相关的(基于OS区域设置)十进制分隔符(值为0,例如',',同时使用'asdefined')来毒害数据。在细胞特性分隔符对于所有其它的值最好从CSV远离。
afk5min

1
请注意,此过程要求您首先使用适当的字段创建表。
LarsH

这不是唯一的问题。我不确定此过程是否正确处理了Excel中单元格内的回车。甚至从csv到excel的导入都失败了
Raul Luna

1
@ afk5min“毒物数据”是什么意思???所有这些标记和标记对于显然要将其导入另一个MS产品的用户来说非常有用...
Mindwin

1
*您的意思是“最艰难的方式”而不是最简单的方式
一次更新时间:

102

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

sqlizer.com的屏幕截图

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

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


22
很高兴知道这个工具的存在,但是一定要考虑是否应该使用它。如果您的电子表格包含敏感数据(例如,用户电子邮件,密码,抄送信息,医疗信息等),则可能不是一个好主意。该站点可能不会存储您的数据,并且可能是安全的,但是您无法确定这一点。
克里斯·施密茨

1
@DivyeshJesadiya最多5000行免费。之后,您必须为每个月的使用支付10美元。
d4nt

@doxsi对我来说似乎很好,您遇到了什么问题?
d4nt

@ChrisSchmitz我们对安全性非常谨慎,并且最近写了一篇关于我们如何操作SQLizer的博客blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan

它可以正常工作,请注意Excel格式,不接受xlt,同时接受xls。
伊曼纽尔·皮罗瓦诺

40

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

  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

    从SQL文件导入的其他方法可以在此Stack Overflow答案中找到


1
这是最简单的方法。谢谢!只要记住要在SQL中删除多余的主键“ ID”,然后放置一个您选择的AUTO增量即可。
Fandango68

29

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

  1. Excel2MySQL。放下手,这是将Excel数据导入MySQL的最简单,最快的方法。它支持所有版本的Excel,不需要Office安装。

    Excel2MySQL的屏幕截图

  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表或追加到表中。更改是添加新记录还是更改现有记录?
panofish 2014年

他们只是覆盖价值。但我只希望附加那些基于日期尚未在数据库中存在的值。通过仅添加一些行而不是每天添加许多行,可以提高性能。
阿伦·拉贾

2
Excel2MySQL工具应该只能创建数据库脚本:(
joseantgv 2015年

PHPMyAdmin是最简单,最快的一种。
阿米尔·哈吉哈

2

不知道您是否已完成所有设置,但是对我来说,我正在使用PHP和MYSQL。因此,我使用了PHP类PHPExcel。这将获取几乎任何格式的文件,如xls,xlsx,cvs等,然后让您读取和/或插入。

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

在前端,这是一项小工作,但是只需调整一些现有的代码示例即可。但是,当您拨入它进行更改时,它既简单又快速。


1

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


1

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

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

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

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



0

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

更特别的是,如果您担心日期,日期时间数据类型,则 DocChow可以轻松处理数据类型。如果要使用多个Excel电子表格,则要将其导入到一个MySQL表中,DocChow会执行脏工作。


0

步骤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);

0

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


0

最快,最简单的方法是将XLS保存为ODS(打开文档的电子表格)并从PhpMyAdmin导入 在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.