繁体   English   中英

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

[英]import tab separated csv file with partial data into mysql table with phpMyAdmin

我有一个约有30列的MySQL表。 我有一个约有10列的CSV文件。

我想使用phpMyAdmin从数据库中的CSV文件更新数据,而不更改其余数据。

例如,MySQL将是:

id, code,  name,     description, a,   b,   c,   x,  y,   z
10, rbmls, Joe Blow, Neighbor,    100, 200, 500, 80, 800, 10

CSV可能包含:

id[TAB]code [TAB]a [TAB]b  [TAB]c
10[TAB]rbmls[TAB]10[TAB]300[TAB]0

我想按ID匹配CSV和MySQL表中的数据,然后覆盖MySQL表中CSV中的数据,而不删除其他任何内容。

上述示例的预期结果将是:

id, code, name, description, a, b, c, x, y, z
10, rbmls, Joe Blow, Neighbor, 10, 300, 0, 80, 800, 10

如何在phpMyAdmin中做到这一点?

LOAD DATA INFILE在末尾具有列规范。 看这里

LOAD DATA INFILE ... 
INTO TABLE ... 
FIELDS TERMINATED BY '\t'
IGNORE 1 LINES
(id, code, a, b, c)

从MySQL-Doc:

默认情况下,当在LOAD DATA INFILE语句的末尾未提供任何列列表时,输入行应包含每个表列的字段。 如果只想加载表的某些列,请指定一个列列表:LOAD DATA INFILE'persondata.txt'INTO TABLE persondata(col1,col2,...);

替代

将数据加载到临时表中,然后从那里对主表执行INSERT ... UPDATE 像这样:

LOAD DATA INFILE ... INTO TABLE `temp` ...

INSERT INTO mainTable (id, code, a, b, c)
SELECT * FROM `temp`
  ON DUPLICATE KEY UPDATE code=VALUES(code), a=VALUES(a), b=VALUES(b), c=VALUES(c);

这里

暂无
暂无

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

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