gpt4 book ai didi

mysql - CSV数据导入及数据处理

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:17 27 4
gpt4 key购买 nike

我必须定期将 CSV 数据导入 MySQL 数据库。

LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE `tablename` FIELDS TERMINATED BY ','

我正在导入的数据没有主键列,同样我无法更改 CSV 文件的结构,因为我无法控制它。

所以我需要将这个 CSV 数据导入到一个临时的 MySQL 表中,这很好,但是我需要获取这些数据并逐行处理它。由于每一行都经过一个过程,我需要从临时表中删除该行,这样我就不会重新处理它。

因为临时表没有主键,所以我不能执行 DELETE FROM tablename WHERE id=X 这将是最好的选择,相反我必须匹配一堆字母数字列(可能最多 5 个以避免意外删除重复项)。

或者,我想我可以在 CSV 导入过程完成后更改表并添加一个主键列,然后按前面解释的那样处理数据。然后完成后,再次更改表以删除主键列,为新的导入做好准备。有人可以告诉我这是否是一个愚蠢的想法吗?什么是最有效和最快速的?

非常感谢任何想法或建议!

最佳答案

您可以从一开始就在临时表中有一个 auto_increment 列,并在加载数据时填充值

CREATE TEMPORARY TABLE tablename
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
col1 INT,
col2 VARCHAR(32),
col3 INT,
...
);

然后在括号中指定所有列,但将 id 留在外面

LOAD DATA LOCAL INFILE '/path/to/file.csv' 
INTO TABLE `tablename`
FIELDS TERMINATED BY ','
(col1, col2, col3,...); -- specify all columns, but leave id out

这样您就不需要在导入前后添加和删除 id 列。由于您定期进行导入,因此您可以考虑使用永久表而不是临时表,并且在完成导入后只需TRUNCATE它以清除表并重置id 列。

关于mysql - CSV数据导入及数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20420919/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com