【问题标题】:Insert comma separated values into MySQL table field将逗号分隔值插入 MySQL 表字段
【发布时间】:2014-03-10 10:50:11
【问题描述】:

我有一个文本文件,其中包含许多兆字节的逗号分隔值(大约 10 Mb):我必须将这些值插入到 mysql 数据库中。任何值都必须存储在表的特定字段的不同行中。任何建议表示赞赏(如果需要,我最终可以使用 PHP)。

【问题讨论】:

  • 如果你有office权限,在Excel中打开CSV,以Open Document Format保存,直接导入phpmyadmin,它甚至会为你制作表格
  • 该表位于远程数据库中,并且有许多不同的字段(我无法替换它们的内容)。此外,我认为一次加载这么多行可能会出现问题。

标签: php mysql csv import insert


【解决方案1】:

对于这项任务,我使用Talend 等工具。您可以从 CSV、excel 文件等进行各种导入,最多 450 个连接器。它是开源的,并且还有一个具有更多功能的付费版本。它是 java,但你不需要在 java 中编码,除非你想做一些应用程序不能做的事情。 您可能需要花费 3/4 小时来完成教程,但这是值得的。

祝你好运

【讨论】:

  • 太夸张了,30行代码就能完成任务
  • @message:该文件在 OpenOffice 中超过 6000 页。我虽然可以拆分页面,然后使用 PHP,但我想知道是否有一种不那么“原始”的方式来做到这一点
  • talend 它更灵活,一旦你学会它,你可以在 3 分钟内完成,基本上所有数据库和最常用的文件格式
【解决方案2】:

只需使用搜索栏,stackoveflow 上有很多示例。主要阶段:

  1. ParseCSV 文件
  2. 通过PDO发起数据库连接
  3. 运行 for/foreach 循环以填充数据库

【讨论】:

  • 这正是我想做的,但我认为有更好的方法。
【解决方案3】:

您可以编写一个 php 脚本,您可以在其中:

  1. 使用explode方法获取数组格式的所有条目
  2. 然后在该数组上运行 for/foreach 循环以将元素添加到数据库中

【讨论】:

  • 当我决定询问是否有比让 PHP 打开一个 10 Mb 文本文件、用逗号分割值并查询数据库更好的方法时,这就是我想要做的......
【解决方案4】:

我认为您应该创建一个具有相同列数的 CSV 文件的表。 您可以在 mysql 中运行此查询以将 CSV 文件数据加载到创建的表中

LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;

【讨论】:

  • csv 文件仅存储 ONE 列的数据:我必须将此数据插入现有表中
  • 导入到临时表后,您可以使用该临时表上的查询插入到现有表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多