Has*_*han 23 mysql csv load-data-infile
我使用LOAD DATA INFILE命令遇到了一些麻烦,因为我想忽略已经在数据库中的行...如果我有一个包含数据的表,如下所示,
id |name |age
--------------------
1 |aaaa |22
2 |bbbb |21
3 |bbaa |20
4 |abbb |22
5 |aacc |22
Run Code Online (Sandbox Code Playgroud)
其中id是自动增量值.我所拥有的csv文件包含如下数据,
"cccc","14"
"ssee","33"
"dddd","22"
"aaaa","22"
"abbb","22"
"dhgg","34"
"aacc","22"
Run Code Online (Sandbox Code Playgroud)
我想忽略行,
"aaaa","22"
"abbb","22"
"aacc","22"
Run Code Online (Sandbox Code Playgroud)
并将其余内容上传到表格中.我已经将所有内容上传到表中的查询如下,
LOAD DATA INFILE 'member.csv'
INTO TABLE tbl_member
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
(name, age);
Run Code Online (Sandbox Code Playgroud)
请帮助我完成这项任务..将非常感谢..我试过很多链接,但没有帮助:(
小智 46
在年龄列上创建一个UNIQUE索引,然后:
LOAD DATA INFILE 'member.csv'
IGNORE INTO TABLE tbl_member
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
(name, age);
Run Code Online (Sandbox Code Playgroud)
一种方法是使用临时表.上传到此并使用SQL从临时表更新tbl_member.
INSERT INTO tbl_member
SELECT Field1,Field2,Field3,...
FROM temp_table
WHERE NOT EXISTS(SELECT *
FROM tbl_member
WHERE (temp_table.Field1=tbl_member.Field1 and
temp_table.Field2=tbl_member.Field2...etc.)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38069 次 |
| 最近记录: |