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。
你上传一个XLSX文件,输入一个工作表名和单元格区域,它将生成一个create table语句和一组insert语句,将你的所有数据导入到MySQL数据库中。
将其导出为某种文本格式。最简单的可能是制表符分隔的版本,但csv也可以工作。
使用加载数据功能。请参阅http://dev.mysql.com/doc/refman/5.1/en/load-data.html
从页面的中间往下看,它将为制表符分隔的数据提供一个很好的示例:
由""括起来的由""转义的 '终止的字段
检查你的数据。有时引用或转义有问题,您需要调整源代码、导入命令——或者通过SQL发布进程可能更容易。
下面是另一种将电子表格数据导入到不依赖任何额外软件的MySQL数据库的方法。假设您希望将Excel表导入到名为
选择相关单元格:
粘贴到mr.data converter中,选择输出为mysql:
更改表名和列定义以满足所生成输出中的需求:
1 2 3 4 5 6 7 8 9 10 11 12 |
如果您正在使用MySQLWorkbench,或者已经从命令行登录到
从SQL文件导入的其他方法可以在这个堆栈溢出答案中找到。
实际上,有几种方法可以将Excel文件导入到MySQL数据库中,其复杂性和成功程度各不相同。
Excel2MysQL或Navicat实用程序。完全公开,我是Excel2MysQL的作者。这两个公用事业不是免费的,但它们是最简单的选择,并且有最少的限制。它们还包括其他功能,以帮助将Excel数据导入到MySQL中。例如,Excel2MysQL会自动创建表并自动优化字段数据类型,如日期、时间、浮动等。如果您匆忙或无法获得其他选项来处理数据,则这些实用程序可能适合您的需要。
加载数据:这个流行的选项可能是最技术性的,需要对MySQL命令执行有一些了解。加载前必须手动创建表,并使用大小适当的varchar字段类型。因此,您的字段数据类型没有优化。加载数据内嵌无法导入超过"允许的最大数据包"大小的大型文件。需要特别注意,以避免导入特殊字符和外部Unicode字符时出现问题。下面是我最近用来导入名为test.csv的csv文件的示例。
phpmyadmin:首先选择数据库,然后选择导入选项卡。phpmyadmin将自动创建表并调整varchar字段的大小,但它不会优化字段类型。phpmyadmin无法导入超过"允许的最大数据包"大小的大型文件。
mysql for excel:这是一个来自Oracle的免费Excel加载项。这个选项有点冗长,因为它使用向导,并且导入速度很慢,对于大文件有问题,但对于使用varchar数据的小文件来说,这可能是一个很好的选项。字段未优化。
不确定您是否拥有所有这些设置,但对于我来说,我使用的是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