INSERT语句将整数更改为空值

时间:2017-03-21 21:18:53

标签: sql teradata

我正在创建一个包含300万行数据和9列的表。 我使用以下语法来插入我的数据。

INSERT INTO myTable
( column1
  column2
  column3
  ...
  column11
  problemColumn
)

Select
<exampleQuery>

1列(我将其称为 problemColumn )在此表中插入120万个空值

当我自己运行 exampleQuery (不将其插入表格)时, problemColumn 会返回0 null值。

  • 在创建表时,problemColumn被正确定义为整数
  • problemColumn有300,000个不同的值。每个值至少出现在表格中一次,这意味着它不会成为格式不佳的问题
  • 没有系统删除明显的价值模式

编辑:一些额外的说明:

  • problemColumn 上没有进行任何计算或联接。我只是从另一个表中选择该变量
  • problemColumn 是源表中的整数,因此不存在不匹配的变量类型问题

这可能是数据库中表格大小的问题吗?我无法理解为什么查询会从插入语句中发生根本改变。

1 个答案:

答案 0 :(得分:0)

最有可能的原因(我自己做的)是肥胖的手指 - 你插入的柱子位置错误。很难在没有看到实际代码的情况下进行验证,但它可能很简单:

insert into table 
(column1, 
column2)
select
(column2, 
column1)
from somewhere

第二种可能性 - 目标表上有一个触发器,它正在改变数据。我讨厌触发的众多原因之一。

我不知道Teradata,但RDBMS的目的是能够正确处理这种情况,所以它与尺寸无关。要验证这一点,请尝试将查询限制为1个结果,并查看会发生什么。

如果这不起作用,请使用“values”

将该查询的结果转换为insert语句
INSERT INTO myTable
( column1
  column2
  column3
  ...
  column11
  problemColumn
)
values
(....)