除了我关于csv import最佳解决方案的问题外,我还搜索验证方法,其中我只使用msyql获得合格的错误。简介:
我通过加载数据INFILE将数据导入到临时表中,然后需要验证这些数据。
最糟糕的方法是选择几个过滤器,例如:
SELECT * from temp_table WHERE col1 not in (1,2) OR col2 REGEXP '[0-9]+' etc.也很管用。但是我想知道最快的方法来保存列为什么会找到这一行,也许是用箱子和一个反方法。类似的?
这样,我就可以返回一个限定错误,例如:“列x只能包含y”。
发布于 2013-07-25 07:16:59
在从CSV文件加载数据之前,可以在temp_table上设置一个触发器。
触发器要么将一行插入永久表(如果它通过验证),要么插入错误表(如果没有)。
DELIMITER //
CREATE TRIGGER validating_insert
AFTER INSERT ON temp_table FOR EACH ROW
BEGIN
IF col1 NOT IN (1,2) OR col2 REGEXP '[0-9]+' THEN
INSERT INTO permanent_table VALUES (NEW.col1, NEW.col2);
ELSE
INSERT INTO error_table VALUES (NEW.col1, NEW.col2, 'any reason goes here');
END IF;
END// https://stackoverflow.com/questions/17850904
复制相似问题