如何使用Python将数据从CSV复制到QuestDB ?



我使用psychopg2模块从Python对QuestDB进行查询。我在使用copy_from()游标对象将CSV数据放入表时遇到了一些麻烦。把这个输入数据库的最好方法是什么?

我正在尝试以下内容:

import pandas as pd
import numpy as np
import psycopg2
import os
conn = psycopg2.connect(user="admin",
password="quest",
host="127.0.0.1",
port="8812",
database="qdb")
cursor = conn.cursor()
dest_table = "eur_fr_bulk"
temp_dataframe = "./temp_dataframe.csv"
# input
df = pd.read_csv("./data/eur_fr.csv")
df.to_csv(temp_dataframe, index_label='id', header=False)
f = open(temp_dataframe, 'r')
cursor = conn.cursor()
try:
cursor.copy_from(f, dest_table)
conn.commit()
except (Exception, psycopg2.DatabaseError) as error:
os.remove(temp_dataframe)
print("Error: %s" % error)
conn.rollback()
cursor.close()
cursor.close()

psychopg2中的copy_from()包装器正在后台执行一些尚未在QuestDB中支持的SQL,具体来说,它将运行

COPY my_table FROM stdin WITH DELIMITER AS '    ' NULL AS '\N'

DELIMITER关键字尚未实现。作为一种解决方法,您可以在python中通过HTTP发出请求,这可能是最方便的:

import requests
csv = {'data': ('my_table_import', open('./data/eur_fr.csv', 'r'))}
server = 'http://localhost:9000/imp'
response = requests.post(server, files=csv)
print(response.text)

或者在server.conf文件中指定一个拷贝目录,该目录允许加载CSV文件。这在COPY文档页面上有记录。

最新更新