繁体   English   中英

将大型(4 GB)CSV插入Mysql数据库(Web服务器)

[英]Insert Large (4 GB) CSV into Mysql Database (web server)

我一直在研究这个主题一段时间,但没有成功。 问题出在这里:我有一个4.5GB的csv文件,我需要将其插入到我的mysql数据库中。 该文件太大,无法通过phpmyadmin导入(最大55 MiB),太大而无法上传到我的Web服务器(最大1000 MB磁盘空间)。 在这一点上,我不确定是否可以完成我需要做的事情。 我知道如何使用LOAD DATA LOCAL INFILE,但是如果Web服务器上没有CSV文件,我将无法执行命令。 任何想法将不胜感激。

附带说明是否有帮助:我从ftp://alt.ncsbe.gov/data下载了csv文件。 该网站是我每周获取信息的地方。 我不确定是否可以从上述站点下载所需信息并将其插入数据库,而无需将其下载到物理计算机。 只是一个随机的想法,但我更专注于第一个问题。

假设mysql服务器接受远程连接,以下命令将起作用(它对我适用于Amazon AWS(Amazon Relational Database Service)。它还假定它具有空间,因为mysql会将其写入磁盘。这实际上取决于您的设置,因为它可以使用具有更多空间的其他分区。

您需要在自己的计算机上运行命令,--local指定该文件是本地文件。

有关更多详细信息,请参见https://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html

mysqlimport --fields-terminated-by=,\
            --local\
            --host=example.com \
            -u username\
            -p /path/to/csv-file

我实际上正在使用相同的数据源。

这似乎对我来说很好:将数据文件'ncvoter92.txt'装入表nc.ncvoter92以'\\ t'终止的列由'\\'终止的以'\\ r \\ n'终止的行第1行;

如果您正在寻找GUI选项,那么使用phpMyAdmin的导入功能会获得更好的成功:

  • 格式= CSV(不使用LOAD DATA的CSV)
  • 以= \\ t分隔的列
  • 包含在=“中的列
  • 用=“转义的列
  • 以= auto结尾的行
  • CHECK =文件的第一行包含表列名(如果未选中,则第一行将成为数据的一部分)

顺便说一句...我注意到FTP上的许多平面文件至少在Linux服务器上存在一致性问题。 您可能需要稍微清理一下数据,以帮助避免错误。

希望这可以帮助! 如果您对数据源有特定疑问,请随时与我们联系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM