我正在尝试使用 psycopy2 中的 copy_from 函数将数据插入到名为“ST_DAY_SRS”的表中,但是如何指定名为“NEW_CNYB”的模式?我使用了选项的参数,但它不起作用,请帮助我,非常感谢。
def action():
conn = psycopg2.connect(host='****',port='45432',
user='postgres',password='postgres',database='NEW_CNYB',options='-c search_path="NEW_CNYB"')
df = pd.DataFrame(l, columns=['ID', 'DATE', 'SUNRISE', 'SUNSET'])
ret=''
values_list=[]
for i in df.itertuples():
values_list.append('\t'.join([i[1],i[2],i[3],i[4]]))
for value in values_list:
ret += value + '\n'
print(ret)
cur = conn.cursor()
cur.copy_from(file=io.StringIO(ret),table="ST_DAY_SRS",
columns=("ID", "DATE", "SUNRISE", "SUNSET"))
conn.commit()
您需要使用
copy_expert()
而不是 copy_from()
示例有一个名为
file
的 CSV 文件:
sql = "COPY SCHEMA.MY_TABLE (COLUMN_A, COLUMN_B) FROM STDIN WITH (FORMAT csv, DELIMITER E'\\t')"
database_cursor.copy_expert(sql, file)
我的方法是在表名之前插入 schema_name ,如下所示
# schema_name.table_name
cur.copy_from(file=io.StringIO(ret),table="ST_DAY_SRS",
columns=("ID", "DATE", "SUNRISE", "SUNSET"))
如果这不起作用,还有另一种可能性:
祝你好运。