Php 如何使用加载数据本地填充替换
我有一个脚本,用于将数据从一个数据库迁移到另一个数据库。我已经使用了常规的mysql插入和更新脚本。只是时间太长了 在任何情况下,我已经将所有我想在新数据库中更新的数据转储到csv,我只是担心如果我运行这个脚本,我会得到重复的条目。我没有匹配的“id”,因此无法对下面列出的替换脚本进行比较。我想知道是否有人能告诉我这个脚本看起来是否正确 目前我在新数据库中有数据行,我只想用csv中的新数据覆盖新数据库中的任何字段,如果它们匹配的话。“存档id号”字段是我唯一可以匹配的字段,但它不是主键 有人能向我开枪吗 如果csv上的存档id号与新数据库中的匹配,我想用csv中的数据替换字段中的任何数据。如果没有匹配项,则我希望将数据作为新行插入Php 如何使用加载数据本地填充替换,php,mysql,csv,load-data-infile,Php,Mysql,Csv,Load Data Infile,我有一个脚本,用于将数据从一个数据库迁移到另一个数据库。我已经使用了常规的mysql插入和更新脚本。只是时间太长了 在任何情况下,我已经将所有我想在新数据库中更新的数据转储到csv,我只是担心如果我运行这个脚本,我会得到重复的条目。我没有匹配的“id”,因此无法对下面列出的替换脚本进行比较。我想知道是否有人能告诉我这个脚本看起来是否正确 目前我在新数据库中有数据行,我只想用csv中的新数据覆盖新数据库中的任何字段,如果它们匹配的话。“存档id号”字段是我唯一可以匹配的字段,但它不是主键 有人能向
$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)
(更多信息请参见)虽然它不是主键,但我假设在
存档的\u id\u编号
上有一个唯一的
?是的,这是正确的,并且在SKU上有一个唯一的,那么在没有原始表构建和csv代码段的情况下,它应该可以工作。不过,我会先在表的测试副本上运行它……如果有疑问,请创建目标表的副本,然后导入到该副本中。通过这种方式,您可以看到在导入真实数据时会发生什么,而不必冒真实数据的风险。如上所述,你写的看起来不错。
$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
);
';