修复 Duckdb Insert 中未实现的 Cast 错误

Joh*_*tte 6 python database duckdb

我正在使用 Duckdb 通过批量插入插入数据

使用以下代码时

conn.execute('INSERT INTO Main SELECT * FROM df')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Invalid Input Error: Failed to cast value: Unimplemented type for cast (VARCHAR -> NULL)
Run Code Online (Sandbox Code Playgroud)

我尝试使用

df.fillna('N/A')
Run Code Online (Sandbox Code Playgroud)

填充任何空值以避免错误,但我仍然收到相同的错误。如何解决这个问题?

Rya*_*erd 15

来自文档:默认情况下,DuckDB 读取数据帧的前 100 行来确定 Pandas“对象”列的数据类型。如果这 100 行为空,则它可能会猜测错误的类型。

使用以下命令覆盖此行为:

# example setting the sample size to 100000
duckdb.default_connection.execute("SET GLOBAL pandas_analyze_sample=100000")
Run Code Online (Sandbox Code Playgroud)

如果使用命名连接,请替换duckdb.default_connection为您的特定 DuckDB 连接变量。

感谢杰夫的评论为我指明了正确的方向。