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

101

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

例如,我的Excel表格看起来像这样:

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

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

1
这个免费的工具可以快速轻松地将Excel电子表格导入到MySQL表中。http://panofish.net/convert-import-excel-spreadsheets-into-mysql-database/ - panofish
感谢您的理解 :) - panofish
太棒了!!! 那么upserts怎么样 ;o) ?! - Yordan Georgiev
现在,如果@panofish的程序不会在数据库中留下空条目,那么它实际上将非常有用。但事实上,我现在必须手动清理数据库或删除它并寻找其他解决方案。 - Kenny Johnson
@KennyJohnson,愿望达成。 http://www.excel2mysql.net/version220.html 直接联系我获取更多反馈。谢谢。 - panofish
显示剩余7条评论
15个回答

133

有一个简单的在线工具可用于此操作,名为sqlizer.io

sqlizer.com的截图

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

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


34
知道这个工具的存在很好,但一定要考虑是否应该使用它。如果你的电子表格包含敏感数据(例如用户电子邮件、密码、信用卡信息、医疗信息等),可能不是一个好主意。这个网站可能不会存储你的数据并且可能是安全的,但你无法确定。 - Chris Schmitz
1
@DivyeshJesadiya 免费使用最多可达5000行。超过此限制,您需要支付10美元以获取一个月的使用权。 - d4nt
@doxsi,我觉得它没问题啊,你遇到了什么问题? - d4nt
它已经更新到每月25美元,不妨建立自己的工具来完成这个任务,并永久使用它。 - qwertzman
@TiagoMartinsPeres 好的,我已经添加了免责声明。这是我业余时间运营的一款免费工具,我只是想提供帮助。 - d4nt
显示剩余4条评论

52

以下是另一种方法,可以将电子表格数据导入到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

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


1
这是最简单的方法。谢谢!只要记得在SQL中删除额外的主键“ID”,并放置您选择的AUTO递增即可。 - Fandango68
太棒了,迄今为止最简单的解决方案。太好了! - Christoph Strehl

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

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

  3. 向下滚动页面一半,它将给出制表符分隔数据的很好的示例:

    FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\'

  4. 检查您的数据。有时引用或转义存在问题,您需要调整源代码、导入命令--或者更容易的办法是通过SQL进行后处理。


2
当导出到CSV时,[至少] Excel 2013会积极尝试使用VBA转义双引号来污染数据,对于0值使用基于操作系统区域设置的本地化依赖的十进制分隔符(例如“,”),而对于所有其他值则使用“按单元格属性定义”的分隔符。最好远离CSV。 - Tadas S
1
请注意,此过程要求您首先创建具有适当字段的表。 - LarsH
这不是唯一的问题。我不确定这个过程是否正确处理了 Excel 单元格内的回车符。即使是从 CSV 导入到 Excel 也会失败。 - Raul Luna
1
@afk5min 你所说的“毒数据”是什么意思???所有这些标签和标记对于那些显然要将其导入到另一个 MS 产品中的用户非常有用... - Mindwin Remember Monica
1
你的意思是“最困难的方式”,而不是最简单的。 - Revious
你还需要考虑权限和服务器配置。任何有安全性的地方可能都会关闭此设置。 - Zero

29

实际上有几种将Excel文件导入MySQL数据库的方法,难度和成功率各不相同。

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

    Excel2MySQL截图

  2. LOAD DATA INFILE:这个流行选项可能是最技术性的,需要一些MySQL命令执行的理解。在加载之前必须手动创建表并使用大小合适的VARCHAR字段类型,因此您的字段数据类型没有优化。LOAD DATA INFILE在导入超出“max_allowed_packet”大小的大文件时会遇到问题。需要特别注意避免导入特殊字符和外来Unicode字符的问题。以下是我最近使用的一个示例,用于导入名为test.csv的csv文件。

    输入图片说明

  3. phpMyAdmin:首先选择您的数据库,然后选择导入选项卡。phpMyAdmin将自动创建您的表并大小调整VARCHAR字段,但它不会优化字段类型。phpMyAdmin在导入超出“max_allowed_packet”大小的大文件时会遇到问题。

    输入图片说明

  4. MySQL for Excel:这是Oracle提供的免费Excel插件。使用向导有点繁琐,而且对于大文件,导入速度慢且存在错误,但对于具有VARCHAR数据的小文件,这可能是一个好选择。字段没有优化。

    输入图片说明


嗨@panofish,我有一张每天都会更新的Excel表格。我想将仅更新的数据放入MySQL数据库表中,而不是整个表格。(即)每天将一行放入表中。如何做到这一点? - Arun Raja
这些解决方案都专注于加载整个电子表格并替换您的MySQL表或附加到该表。更改是否添加新记录或更改现有记录? - panofish
他们只是在覆盖值。但是我只想追加那些基于日期在数据库中不存在的值。这可以通过仅添加一些行而不是每天添加许多行来提高性能。 - Arun Raja
2
Excel2MySQL工具应该有只创建数据库脚本的可能性。 - joseantgv
PHPMyAdmin是最简单和最快速的一个。 - Amir Hajiha

2

不确定您是否已经设置好了所有内容,但我使用的是PHP和MYSQL。因此,我使用一个名为PHPExcel的PHP类。它可以读取几乎任何格式的文件,如xls、xlsx、cvs等,并允许您进行读取和/或插入操作。

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

在前端方面需要一些工作,但只需要微调一些现有的代码示例即可。但是,一旦您完成了导入的调整,对其进行更改就变得简单而快速。


PHPExcel的最新版本是1.8.1,发布于2015年。该项目于2017年正式被弃用,并于2019年永久存档。 - Wondarar

1
当使用文本文件导入数据时,我遇到了引号和Excel格式化数字的问题。例如,我的Excel配置使用逗号作为小数分隔符而不是点。
现在我使用Microsoft Access 2010打开MySql表格作为链接表。在那里,我可以简单地将Excel中的单元格复制并粘贴到Access中。
要做到这一点,首先安装 MySql ODBC驱动程序并创建ODBC连接。 然后在Access中,在“外部数据”选项卡中,打开“ODBC数据库”对话框并链接到任何使用ODBC连接的表。
使用MySql Workbench,您还可以将Excel数据复制并粘贴到MySql Workbench的结果网格中。我在此答案中给出了详细说明。

1
最好且最简单的方法是使用“MySQL for Excel”应用程序,这是来自Oracle的免费应用程序。该应用程序添加了一个插件到Excel中,可以将数据导入和导出到MySQL数据库中。您可以从这里下载该应用程序。

https://downloads.mysql.com/archives/excel/ - smoore4

1
最快、最简单的方法是将XLS文件另存为ODS(开放文档电子表格),然后从PhpMyAdmin导入它。 输入图像描述

0

步骤1 创建您的CSV文件

步骤2 登录到您的MySQL服务器

     mysql -uroot -pyourpassword 

步骤三:加载您的 CSV 文件

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

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接