我执行导入并将列转换为其他数据类型。在导入期间我检查,如果我可以将存储在列中的值转换为目标数据类型。如果不是,我会设置默认值,例如我将一个字符串转换为int,当我无法转换字符串时,我插入-1。
此时,如果我可以将错误的条目记录到单独的表格中,那将是很好的,例如而不是可解析的字符串'1234''xze'到达,所以我将-1放入目标表并将'xze'放入日志表中。 这可能是(T-)SQL吗?
干杯,
安德烈亚斯
答案 0 :(得分:2)
使用SSIS数据流任务也很容易。您可能尝试的任何数据转换或查找步骤都有“成功”输出和“错误”输出。您只需将所有错误输出定向到“联合”转换,然后从那里转换为常见错误表。所有成功的结果都会进入您的“成功”表。您甚至可以在错误表中添加额外的详细信息,以便为您提供明确的错误消息。
关于这一点的好处是,当整个缓冲区在系统中移动时,您仍然可以获得高性能。您最终会将充满有效数据的缓冲区批量写入成功表,并将充满错误的小缓冲区写入错误表。当一行发生错误时,该行将简单地从一个行缓冲区移动到另一个行。
答案 1 :(得分:0)
如果您有一个临时表,您可以将好东西过滤到最终表中并进行联接(NOT EXISTS)以查找日志表的垃圾