使用 CSV 文件更新 MySQL 表
Posted
技术标签:
【中文标题】使用 CSV 文件更新 MySQL 表【英文标题】:Update MySQL Table using CSV file 【发布时间】:2012-06-13 16:26:41 【问题描述】:我当前的 mysql 表 employee_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 表