0

除了关于csv 导入的最佳解决方案的问题之外,我还 搜索了仅使用 msyql 获得合格错误的验证方法。 简短的介绍:

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

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

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

也有效。但我想知道保存列的最快方法为什么找到该行,也许是用案例和一个计数器。相似的?

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

4

1 回答 1

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// 
于 2013-07-25T07:16:59.420 回答