使用mysql和合格错误进行验证

时间:2013-07-25 06:47:41

标签: php mysql

除了我关于csv import的最佳解决方案的问题 我搜索验证方法,我只使用msyql获得合格的错误。 简短说明:

我通过LOAD DATA INFILE将数据导入临时表,然后我需要验证这些数据。

最好的方法是选择几个过滤器,如:

SELECT * from temp_table WHERE col1 not in (1,2) OR col2 REGEXP '[0-9]+' etc.

也可以。但我想知道最快的方法来保存列为什么找到行,也许有案例和反击ort ......相似?

这样我就可以返回一个合格的错误,例如:“列x只能包含y”

1 个答案:

答案 0 :(得分:1)

您可以在从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//