2016-06-28 56 views
0

所以,我使用odo进行数据迁移,但是碰到这个错误传来:走走整数超出范围“的错误SQLAlchemy的

sqlalchemy.exc.DataError: (psycopg2.DataError) integer out of range 

源和目标表都具有相同的架构,但在SQL语句在后端执行时,整数值与它们有0。就像在源表中的整数34如图34.0

[SQL: INSERT INTO table2 (col1, col2,col3) VALUES (%(col1)s, %(col2)s, %(col3)s] 
[parameters: ({'col2' : val2', 'col3' : val3', 'col1' : val1})] 

请让我知道,如果需要更多的信息。

+0

这可能是因为'NaN'价值对于参数字典中的整数列。添加了一个新的问题:http://stackoverflow.com/questions/38074487/copy-empty-string-to-integer-column-postgres – delalli

回答

0

SQL字符串应该是:

INSERT INTO table2 (col1, col2, col3) VALUES (
    %(col1)s::numeric::int, 
    %(col2)s::numeric::int, 
    %(col3)s::numeric::int 
) 

如果目标列不可为空并且源值可以是None然后合并它:

coalesce(%(col1)s::numeric::int, 0), 
+0

SQL字符串是odo在错误发生时显示为输出的内容。我无法改变它。 – delalli

+0

由于我无法更改SQL字符串,我该如何解决这个问题? – delalli

+0

@delalli显示你的Python/Odo代码 –