gpt4 book ai didi

mysql - 标记大型 mysql 文件上的记录

转载 作者:行者123 更新时间:2023-11-30 00:50:41 25 4
gpt4 key购买 nike

我们目前正在将非常大的 CSV 文件导入到 mySQL 数据仓库中。处理的关键部分是标记 CSV 文件中的记录是否与仓库中的现有记录匹配。 “匹配”是通过将新数据中的特定字段与表的先前版本进行比较来完成的。如果记录是“新的”或者有更新,我们希望将其添加到仓库中。

目前处理计划如下:

         ~ read CSV file into mySQL table A
~ is primary key on A on old-A? If it isnt set record status to "NEW"
~ if key is on old-A, issue update statement , JOINING old-A to A
~ if A.field1 = old-A.field1 OR A.field2 = A.old-A.field2 OR A.field3 = old-A.field3 THEN flag record status as "UPDATE"
~ process NEW or UPDATEd records according to record status

A 和 old-A 上的文件大小当前约为 50M 记录。我们预计新记录为 1M,更新为 5-10M。

虽然我们目前使用 MYSQL 进行此处理,但我想知道使用脚本语言是否会更好?我们特别发现标记更新的步骤非常耗时。本质上,我们有一个无法使用任何索引的 UPDATE 语句。

所以
创建表 A (key1 bigint,
字段 1 varchar(50), 字段2 varchar(50), 字段 3 varchar(50) ); 加载数据... ...将字段rec_status添加到表A ... 然后 更新A LEFT JOIN old-A ON A.key1 = old-A.key1 设置rec_status = '新' WHERE old-A.key1 = NULL; 更新A JOIN old-A ON A.key1 = old-A.key1 设置rec_status = '已更新' WHERE A.field1 <> 旧 A.field1 或 A.field2 <> 旧 A.field2 或 A.field3 <> 旧 A.field3; ...

最佳答案

我会考虑跳过“标记”步骤。使用脚本或使用 MySQL 语句的 MySql 表 A 处理 CSV 文件,根据任何条件从 old-A 表中选择一条记录,例如表 A 的 field1 或/和 field2...,如果找到,则锁定并更新 old-A A 记录,从 CSV 或表 A​​ 中删除已处理的记录。如果未找到,则在 old-A 中使用数据创建记录。

关于mysql - 标记大型 mysql 文件上的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005820/

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