【发布时间】:2020-03-29 18:06:35
【问题描述】:
所以我使用None 对象在 pandas 数据框中定义空值。
这是数据框中带有NaN 和None 的行的示例
27 XXX None 41.0 NaN 1.0 50.0 NaN 1.0 71.0 3.0 0.9826382611 162.0 3.0 0.9952958893 MTD
当我在数据帧中插入None 时,它变为NaN,然后当插入到 Teradata 中的一个小整数字段中时,我得到一个插入错误。如何告诉 teradata 使用 python 将那些 NaN 插入到 teradata 中的空值?
计算过程中发生数值溢出。
在下面的例子中,参数8是NaN
Insert Exception in function insertDtframe, activated rollback: [Version 16.20.0.54] [Session 2258656] [Teradata SQL Driver] [Error 502] Batch row 3 bound parameter 8 type VARCHAR (448) differs from batch row 1 type FLOAT (480)
at gosqldriver/teradatasql.(*teradataConnection).makeDriverErrorCode TeradataConnection.go:1074
at gosqldriver/teradatasql.(*TeradataRows).validateBatchValues TeradataRows.go:947
at gosqldriver/teradatasql.newTeradataRows TeradataRows.go:361
at gosqldriver/teradatasql.(*teradataStatement).QueryContext TeradataStatement.go:122
at gosqldriver/teradatasql.(*teradataConnection).QueryContext TeradataConnection.go:2036
at database/sql.ctxDriverQuery ctxutil.go:48
at database/sql.(*DB).queryDC.func1 sql.go:1464
at database/sql.withLock sql.go:3032
at database/sql.(*DB).queryDC sql.go:1459
at database/sql.(*Conn).QueryContext sql.go:1701
at main.goCreateRows goside.go:599
at main._cgoexpwrap_e6e101e164fa_goCreateRows _cgo_gotypes.go:331
at runtime.call64 asm_amd64.s:574
at runtime.cgocallbackg1 cgocall.go:316
at runtime.cgocallbackg cgocall.go:194
at runtime.cgocallback_gofunc asm_amd64.s:826
at runtime.goexit asm_amd64.s:2361
Completed Time: 2019-12-04 15:41:06.967610
【问题讨论】:
-
不是 Teradata 特定的,更多的是大多数数据库接口和 numpy 之间的实现差异。例如,请参阅Replacing pandas or numpy NaN with None for MySQL
-
你帮了忙。现在可以了。谢谢@Fred
标签: python python-3.x dataframe teradata teradata-sql-assistant