我有一个包含超过 10 万条记录的 CSV 文件,我需要将某些字段插入到一个表中,并将其余字段插入到另一个表中。
我知道我可以一个接一个地编写两个 LOAD DATA INFILE 查询来得到这个,我试过了,它也工作得很好。但我想知道是否可以执行以下操作:
- 从 csv 文件中读取一行。
- 取某些记录,将它们插入表 A。将剩余的插入表 B。
- 阅读下一行。重复 2。
这可能吗?我知道 MySQL 中的并发对系统来说真的很累人,但我想知道我所有的选择。
我有一个包含超过 10 万条记录的 CSV 文件,我需要将某些字段插入到一个表中,并将其余字段插入到另一个表中。
我知道我可以一个接一个地编写两个 LOAD DATA INFILE 查询来得到这个,我试过了,它也工作得很好。但我想知道是否可以执行以下操作:
这可能吗?我知道 MySQL 中的并发对系统来说真的很累人,但我想知道我所有的选择。
行过滤器是不可能的LOAD DATA INFILE
。
grep
但是,您可以使用or创建一个小的 shell 脚本来awk
解析您的文件并仅插入符合您的条件的记录:
cat file.txt |
awk '/\t.+/' |
mysql -u your_username -pyour_password \
-e "LOAD DATA LOCAL INFILE '/dev/stdin' \
IGNORE INTO TABLE table_name \
COLUMNS TERMINATED BY '\t' \
LINES TERMINATED BY '\n' \
(col1, col2);" \
database_name
其他更好的方法是将所有数据加载到临时表中,并使用该表通过过滤所需数据来加载原始表中的数据。