gpt4 book ai didi

php - 如何使用 LOAD DATA LOCAL INFILE REPLACE

转载 作者:可可西里 更新时间:2023-11-01 07:37:15 25 4
gpt4 key购买 nike

我有一个脚本,用于将数据从一个数据库迁移到另一个数据库。我已经使用常规的 mysql 插入和更新脚本完成了此操作。只是花的时间太长了。

无论如何,我已经将新数据库中要更新的所有数据转储到 csv 中,我只是担心如果我运行此脚本,我会得到重复的条目。我没有匹配的“id”,所以我无法对下面列出的 REPLACE 脚本进行比较。我想知道是否有人可以提醒我这个脚本看起来是否正确。

目前我在新数据库中有几行数据,如果它们匹配,我只想用 csv 中的新数据覆盖新数据库中的任何字段。 “archived_id_number”字段是我唯一可以匹配的字段,但它不是主键。

谁能拍下我:

如果 csv 上的 archived_id_number 与新数据库中的匹配,我想用 csv 中的数据替换字段中的任何数据。如果没有匹配项,我想将数据作为新行插入。

$sql = '
LOAD DATA LOCAL INFILE "'.$theFile.'"
REPLACE INTO TABLE Product
FIELDS TERMINATED BY "|"
LINES TERMINATED BY "\\n"
(archived_id_number, sku, name, upc, account_id, shippingBox_id, unit_cost, supplier_id, description, productLength, productWidth, productHeight)
;';

感谢您的帮助!!!

最佳答案

作为我评论的详细说明,虽然您的查询看起来不错,但我建议您针对当前表的副本进行测试。这将使您能够在不危及现有数据的情况下准确确认将会发生什么。您可以通过执行以下 3 个查询来实现此目的(显然是插入 php 来执行 $sql)。

$sql = '
CREATE TABLE `_test_Product` LIKE Product;
';

$sql = '
INSERT `_test_Product` SELECT * FROM Product;
';

$sql = '
LOAD DATA LOCAL INFILE "'.$theFile.'"
REPLACE INTO TABLE `_test_Product`
FIELDS TERMINATED BY "|"
LINES TERMINATED BY "\\n"
(
archived_id_number,
sku, name, upc, account_id, shippingBox_id, unit_cost,
supplier_id, description, productLength, productWidth, productHeight
);
';

(更多信息请参阅 Duplicating a MySQL table, indexes and data)

关于php - 如何使用 LOAD DATA LOCAL INFILE REPLACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984295/

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