我建议在您的脚本中引入一系列易失性表,您可以使用这些表来帮助调试每个运行的 SQL 语句以确认正在发生的更改。易失性表是在用户假脱机空间内创建的,因此您无需向您的 DBA 团队询问永久空间或其他数据库中的额外权限来创建这些表。
一旦有了易失性表,您就可以开始查询易失性表并在电子表格中比较结果,以跟踪从一个步骤或脚本到下一个步骤或脚本发生的变化。特别注意数据类型、NULL 与 NOT NULL 以及 JOIN 条件。数据类型之间的细微差别可能足以导致某些东西无法满足相等条件并因此丢弃记录。
编辑:
您是否查看过 EXPLAIN 计划以查看优化器是否将写入的内容作为 OUTER JOIN 并将其转换为 INNER JOIN?如果您的逻辑中有任何 OUTER JOIN,则必须小心您在参与 OUTER JOIN 的表上的资格。如果您将条件放在 WHERE 子句中,优化器可能会将您的联接重写为 INNER JOIN。这可能会导致行从 JOIN 的 LEFT 或 RIGHT 侧脱落,具体取决于您编写的 JOIN。
Teradata 有一个 Visual Explain 工具,我发现它用处不大。我发现 Oracle 和 SQL Server 可以生成的内容使用起来更加直观,因为它们内置在查询工具中。Visual Explain 要求您加载 QCD 数据库,然后将工具指向它。充其量对我来说很麻烦。我发现追踪 EXPLAIN 计划更容易。你的旅费可能会改变。