Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
T-SQL:如何在导入期间记录错误条目_Sql_Sql Server 2005_Tsql_Error Handling - Fatal编程技术网

T-SQL:如何在导入期间记录错误条目

T-SQL:如何在导入期间记录错误条目,sql,sql-server-2005,tsql,error-handling,Sql,Sql Server 2005,Tsql,Error Handling,我执行导入并将列转换为其他数据类型。在导入期间,我检查是否可以将列中存储的值转换为目标数据类型。如果没有,我会输入一个默认值,例如,我将字符串转换为int,当我无法转换字符串时,我会插入-1 此时,如果我能将错误条目记录到一个单独的表中,那就太好了。例如,代替可解析字符串“1234”,我将-1放入目标表,将“xze”放入日志表。 使用(T-)SQL是否可以实现这一点 干杯 Andreas这对于SSIS数据流任务也是非常容易做到的。您可能尝试的任何数据转换或查找步骤都有“成功”输出和“错误”输出。

我执行导入并将列转换为其他数据类型。在导入期间,我检查是否可以将列中存储的值转换为目标数据类型。如果没有,我会输入一个默认值,例如,我将字符串转换为int,当我无法转换字符串时,我会插入-1

此时,如果我能将错误条目记录到一个单独的表中,那就太好了。例如,代替可解析字符串“1234”,我将-1放入目标表,将“xze”放入日志表。 使用(T-)SQL是否可以实现这一点

干杯


Andreas

这对于SSIS数据流任务也是非常容易做到的。您可能尝试的任何数据转换或查找步骤都有“成功”输出和“错误”输出。您只需将所有错误输出定向到一个“联合”转换,并从那里导入一个公共错误表。所有成功的结果都会进入你的“成功”表格。您甚至可以在错误表中添加额外的详细信息,以提供清晰的错误消息


这样做的好处是,当整个缓冲区在系统中移动时,仍然可以获得高性能。最终,您将有一个装满有效数据的缓冲区被批量写入成功表,还有一个装满错误的小缓冲区被写入错误表。当一行发生错误时,该行将从一个行缓冲区移动到另一个行缓冲区。

如果您有一个暂存表,您可以将好的内容过滤到最后一个表中,并执行一次连接返回(不存在)以查找日志表的垃圾。

我们谈论的是多少行?每次进口几十或1000?是的。但是,如果此人使用的是SQLServer2000,这就要困难得多。这篇文章的标签是“sqlserver2005”。