2016-06-28 53 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代碼 –