簡體   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