【发布时间】:2020-02-13 18:06:09
【问题描述】:
我正在尝试将 Pandas 数据框插入 Clickhouse。
这是我的代码
import pandas
import sqlalchemy as sa
uri = 'clickhouse://default:@localhost/default'
ch_db = sa.create_engine(uri)
pdf = pandas.DataFrame.from_records([
{'year': 1994, 'first_name': 'Vova'},
{'year': 1995, 'first_name': 'Anja'},
{'year': 1996, 'first_name': 'Vasja'},
{'year': 1997, 'first_name': 'Petja'},
])
pdf.to_sql('test_humans', ch_db, if_exists='append', index=False)
这是我收到的错误。这是否与缺少有关 ENGINE 的一些额外参数有关?我该如何解决这个问题?
异常:代码:62,e.displayText() = DB::Exception:语法错误: 在第 65 位失败(第 7 行,第 2 列):FORMAT TabSeparatedWithNamesAndTypes。预期之一:ENGINE,存储 定义(版本 19.15.2.2(正式版))
记录
INFO:sqlalchemy.engine.base.Engine:EXISTS TABLE test_humans 信息:sqlalchemy.engine.base.Engine:{} 信息:sqlalchemy.engine.base.Engine:创建表 test_humans( 名字文本, 年 BIGINT )
信息:sqlalchemy.engine.base.Engine:{} INFO:sqlalchemy.engine.base.Engine:ROLLBACK
【问题讨论】:
-
您是否使用clickhouse-dialect 进行sqlalchemy?您能否提供 test_humans-table 的架构描述?
-
是的,我是。当使用 to_sql() 时,pandas 通常会自动创建一个模式。我想这与此有关。方言创建的创建模式 sql 语句缺少一些关于“ENGINE”的专有命令。
-
查看我的更新..有关已发出查询的一些日志信息。
标签: python pandas clickhouse