使用 CSV 文件更新 MySQL 表

Posted

技术标签:

【中文标题】使用 CSV 文件更新 MySQL 表【英文标题】:Update MySQL Table using CSV file 【发布时间】:2012-06-13 16:26:41 【问题描述】:

我当前的 mysqlemployee_data 有 13k 行和 17 列。表中的数据来自 CSV 文件Employees.csv。导入我的 csv 数据后,我添加了一个新列“密码”(因此它不在 csv 文件中)密码是通过门户网站编辑和访问的。我现在有一个更新的 csv 文件,我想用该数据更新我的主表,但我不想丢失我的密码信息。

我是否应该将新的 CSV 文件导入数据库中的临时表中,以及如何比较它们?我不知道从哪里开始,我愿意接受建议。

我现在意识到我应该将密码信息保存在单独的表格中。哇!

我想我可以创建一个 php 文件,根据employee_id 字段比较每一行,但如果有 13k 行,我担心它可能会超时。

【问题讨论】:

你试过像 MySQL 工作台这样的工具吗? 我还没有,但现在会调查。 你是要代码还是查询工具? 我认为最简单的方法是获取 mysql 查询(代码)来比较和更新所需内容。 【参考方案1】:

我会这样做:

使用CREATE TABLE new_tbl LIKE orig_tbl; 语法创建temp table 使用LOAD DATA INFILE将数据从CSV导入表格中 使用UPDATE 使用主键/唯一列更新主表(可能是employee_id

我处理过包含 1.2 亿行的表格,并将包含 3000 万行的 CSV 文件导入其中 - 这是我一直使用的方法 - 比 PHP 中的任何方法都高效(这也是我选择的服务器端语言)

【讨论】:

我认为这是我将首先尝试的选项。谢谢。 我每天都对多个 60GB 文件做同样的事情......这始终是完成它的最干净/最安全的方法 以前,我认为这对于日常更新来说可能不是一个好主意,因为它需要在数据库服务器中创建一些临时表。但确实这是比较使用 php 更新行的最简单方法。【参考方案2】:

尝试除基于 php 的工具以外的其他工具 phpMyAdmin MySQL workbench 是一个很棒的工具, 根据您的连接,使用您的数据查询数据库需要一段时间。 有php超时限制的解决方法, set_time_limit();

【讨论】:

以上是关于使用 CSV 文件更新 MySQL 表的主要内容,如果未能解决你的问题,请参考以下文章

使用 phpMyAdmin 将带有部分数据的制表符分隔的 csv 文件导入 mysql 表

使用 CSV 存储引擎直接从 CSV 文件创建 mysql 表?

将 MySQL 表导出到 .csv 文件

通过验证将 csv 文件内容加载到 mysql 表中

mysql 表导入向导无法导入 csv 文件

如何使用 CSV(平面文件)更新 MySQL 数据库并在插入前验证数据