【问题标题】:T-SQL: How to log erroneous entries during importT-SQL:如何在导入期间记录错误条目
【发布时间】:2009-05-26 18:38:04
【问题描述】:

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

此时,如果我可以将错误条目记录到单独的表中,那就太好了,例如而不是可解析的字符串 '1234' 'xze' 到达,所以我将 -1 放入目标表并将 'xze' 放入日志表。 使用 (T-)SQL 可以做到这一点吗?

干杯,

安德烈亚斯

【问题讨论】:

  • 我们在谈论多少行?每次导入几十个还是上千个?

标签: sql sql-server-2005 tsql error-handling


【解决方案1】:

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

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

【讨论】:

  • 是的。但是,如果此人使用的是 SQL Server 2000,则要困难得多。
  • 帖子被标记为“sqlserver2005”。
【解决方案2】:

如果你有一个临时表,你可以将好东西过滤到最终表中,然后做一个连接(不存在)来找到日志表的垃圾

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 2011-03-05
    • 2018-04-09
    相关资源
    最近更新 更多