Python 如何使用copy_expert将数据加载到列名称中包含特殊字符的postgresql表中?

Python 如何使用copy_expert将数据加载到列名称中包含特殊字符的postgresql表中?,python,postgresql,Python,Postgresql,我正在将csv文件emp.csv中的数据加载到postgres sql表-emp中,如下所示: df = pd.read_csv("C:\Users\vgarud\emp.csv") cols = ",".join(df.columns) fh = open(r"C:\Users\vgarud\emp.csv",'r') next(fh) q1 = "copy public.emp(cols) from STDIN with

我正在将csv文件emp.csv中的数据加载到postgres sql表-emp中,如下所示:

df = pd.read_csv("C:\Users\vgarud\emp.csv")
cols = ",".join(df.columns)
fh = open(r"C:\Users\vgarud\emp.csv",'r')
next(fh)
q1 = "copy public.emp(cols) from STDIN with (format csv,delimiter ',')"
cur.copy_expert(q1,fh)
con.commit()
fh.close()
这个很好用。但只要在任何列(如“-”)的名称中有特殊字符,上面的复制查询就会失败。 它要求列应该像这样用双引号包装 “id”、“name”、“desgn”、“sal”

但此-->cols=“,”.join(df.columns)会将列创建为“id、name、desgn、sal”


你知道如何从数据框列创建引号列名字符串吗?

列名必须用双引号括起来,可以这样做:

cols = ",".join('"{}"'.format(col) for col in df.columns)