gpt4 book ai didi

mysql - 使用同时 JOIN 将 CSV 上传到 MySQL 表中

转载 作者:可可西里 更新时间:2023-11-01 07:13:33 24 4
gpt4 key购买 nike

我想做的是将 CSV 上传到一个表中,同时使用 JOIN 将第三个表中的信息附加到目标表中。

CSV import.csv(100 万行)如下所示:

firstname | lastname

目标表“names”如下所示:

firstname | lastname | gender

“性别”表(有 70 万行)如下所示:

firstname | gender

所以,我理想的查询应该是这样的:

LOAD DATA LOCAL INFILE "import.csv"
INTO TABLE names n
LEFT JOIN gender g ON(g.firstname=n.firstname)

按照这些思路,将导入与连接结合起来,以便名称中的最终结果具有来自性别和 CSV 的数据。

但是,我知道 LOAD DATA LOCAL INFILE 不能与 JOIN 结合使用,并且尝试对每一行使用 INSERT 和 JOIN 会占用大量 CPU。

有什么想法吗?

最佳答案

您可以使用 LOAD DATA INFILESET 子句来实现您的目标

LOAD DATA LOCAL INFILE '/path/to/your/file.csv'
INTO TABLE names
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n' -- or '\r\n' if file has been prepared in Windows
IGNORE 1 LINES -- use this if your first line contains column headers
(@first, @last)
SET firstname = @first,
lastname = @last,
gender =
(
SELECT gender
FROM gender
WHERE firstname = @first
LIMIT 1
)

确保:

  • gender 表中的 firstname 列有一个索引
  • 在加载数据之前,names 表上没有任何索引。完成加载后添加它们(索引)。

关于mysql - 使用同时 JOIN 将 CSV 上传到 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18552006/

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