【发布时间】:2012-02-20 13:15:34
【问题描述】:
我正在处理一张有大约 500 万条记录的表。我正在从 csv 文件加载记录。
有一个独特的列,url。
在插入时,如果url 已经在表中,我想更改新的url 值,然后进行插入。
示例:
尝试插入具有
url或"book"的记录。如果"book"已经存在,则新记录应该有url或"book-1"(然后是"book-2"等等)结果:除了初始值
book之外,url值"book-1","book-2"...也在表中
我发现有 2 种方法可以这样做。
在插入每条记录之前:检查
url值是否已经存在;如果确实如此,则在新的url值中进行所需的更改并插入。恐怕这会导致性能不佳。插入记录而不检查
url值是否已存在。如果url值已经存在,则处理“mysql #1062 - Duplicate entry error”并在url值中进行必要的更改;重试插入。
这可能吗?如果有,怎么做?
【问题讨论】:
-
您将使用什么来导入 csv ?我会编写一个 php 文件来插入记录,使用 try/catch 块来获取 1064/1062 重复条目,并相应地更改 url。
-
我正在编写一个 ruby 脚本并使用 Sequel ORM。
-
Ruby 不是我的领域 :) 但我确信存在相同的机制,对 CSV 中的每条记录运行查询,如果遇到重复键异常,请更改值并再次插入