微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 pandahouse 将数据框上传到 clickhouse

如何解决使用 pandahouse 将数据框上传到 clickhouse

我尝试使用 pandahouse 将数据帧上传到 clickhouse。我连接到我的数据库并将数据从表转储到数据框。接下来,我尝试将此数据上传到 clickhouse 中的表,但出现错误:(

Traceback (most recent call last):
  File "C:\Users\tmedvedeva\PycharmProjects\upload_to_CH\connect_CH.py",line 17,in <module>
    ph.to_clickhouse(df,'outputt',index=False,connection=connection)
  File "C:\Users\tmedvedeva\PycharmProjects\upload_to_CH\venv\lib\site-packages\pandahouse\core.py",line 64,in to_clickhouse
    execute(query,data=to_csv(chunk),connection=connection)
  File "C:\Users\tmedvedeva\PycharmProjects\upload_to_CH\venv\lib\site-packages\pandahouse\http.py",line 48,in execute
    raise ClickhouseException(response.content)
pandahouse.http.ClickhouseException: b'Code: 27,e.displayText() = DB::Exception: Cannot parse input: expected \';\' before: \',"\xd0\xa6\xd0\xb5\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xb8\xd0\xba\xd0\xbe\xd0\xb2\xd0\xb0 \xd0\xaf\xd0\xbd\xd0\xb0"\\r\\n"22","\xd0\xa2\xd0\xb0\xd0\xbb\xd0\xb0\xd0\xb5\xd0\xb2\xd0\xb0 \xd0\x95\xd0\xba\xd0\xb0\xd1\x82\xd0\xb5\xd1\x80\xd0\xb8\xd0\xbd\xd0\xb0"\\r\\n"23","\xd0\x93\xd1\x80\xd0\xb8\xd1\x88\xd0\xb8\xd0\xbd\xd0\xb0 \xd0\x95\xd0\xba\xd0\xb0\xd1\x82\xd0\xb5\xd1\x80\xd0\xb8\xd0\xbd\xd0\xb0"\\r\\n"24","\xd0\xa2\xd0\xbe\xd1\x80\xd0\xb3\xd0\xbe\xd0\xb2\xd0\xb0 \xd0\x95\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb0"\\r\\n"2\': (at row 1)\n\nRow 1:\nColumn 0,name: id_step2,type: String,parsed text: "<DOUBLE QUOTE>21<DOUBLE QUOTE>"\nERROR: There is no delimiter (;). "," found instead.\n\n (version 20.4.5.36 (official build))\n'

来自表格的数据:

id employee_name
1 姓名 1
2 名称 2
3 名称 3

代码

from clickhouse_driver.client import Client
import pandahouse as ph
import pandas as pd

connection = dict(database='db-78',host='http://localhost:7008',user='User',password='password')

df = ph.read_clickhouse("SELECT * FROM `db-78`.outputt",connection=connection)

ph.to_clickhouse(df,connection=connection)

df = ph.read_clickhouse("SELECT id,employee_name FROM `db-78`.outputt",connection=connection)

print(df)

如果我只获取上传一列,那么它可以工作,但如果更多,我会收到错误消息。 我究竟做错了什么?错在哪里?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。