我有一个 CSV 导入 MySQL,在收到我的第一个重复输入错误后,我正在寻找一些功能来检查在导入 MySQL 之前是否存在重复项。
我在跑步Coldfusion8, MySQL5.0.88
。
在实际提交到主数据库之前,我的导入首先进入中间表 (import_pricat_csv)。填充中间表时,我正在执行所有导入验证,如下所示:
<cfquery datasource="db">
UPDATE import_pricat_csv
SET error= "true", errorMsg= "invalid EAN"
WHERE iln = <cfqueryparam value = "#Session.loginID#" cfsqltype="cf_sql_varchar" maxlength="13">
AND error= "no"
AND (ean is null OR NOT (ean REGEXP '[0-9]{13}' OR ean REGEXP '[0-9]{12}'))
</cfquery>
这会在 import_pricat 被提交到数据库之前检查它是否存在错误。我知道我可以INSERT IGNORE
进入 MySQL,但我需要这样做才能创建导入错误报告。
我需要添加一个规则来检查ean
要导入的是否已经在实际的数据库表中products
。
我正在尝试这个,但它不起作用:
<cfquery datasource="db">
UPDATE import_pricat_csv
SET error= "yes", errorMsg= "duplicate EAN"
WHERE iln = <cfqueryparam value = "#Session.loginID#" cfsqltype="cf_sql_varchar" maxlength="13">
AND error= "no"
AND ean IN (SELECT p.ean FROM products AS p WHERE p.ean = ean )
</cfquery>
知道我做错了什么吗?
谢谢!