Psycopg2 模块语法错误在 "/" 或接近



我想通过psycopg2将csv文件导入PostgreSQL。但是,csv文件列名包含特殊字符。我可以用这些代码行通过psycopg2创建一个表。

cursor.execute('''CREATE TABLE crimnalRate(CrimeDate DATE, 
CrimeTime TIME,
CrimeCode TEXT,
Location TEXT,
Description TEXT,
"Inside/Outside" TEXT,
Weapon Text,
Post INT,
District TEXT,
Neighborhood TEXT,
Longitude DOUBLE PRECISION,
Latitude DOUBLE PRECISION,
"Location 1" TEXT,
Premise TEXT,
vri_name1 TEXT,
"Total Incidents" INT)''')

当我想使用copy_from函数导入带有这些代码行的csv文件时。

df=open('BD1.csv','r')
cursor.copy_from(df,"crimnalRate", columns=('CrimeDate',
'CrimeTime',
'CrimeCode',
'Location',
'Description',
'Inside/Outside',
'Weapon',
'Post',
'District',
'Neighborhood',
'Longitude',
'Latitude',
'Location 1',
'Premise',
'vri_name1',
'Total Incidents'),sep=",")

并且它总是返回errorpsycopg2.errors.SyntaxError:在"处或附近的语法错误/">

我尝试在特殊字符之前使用反斜杠,或者将特殊列名放入双引号中,但它仍然返回相同的错误消息。如何修复此错误?有人能给我一些建议吗?非常感谢。

这对我有效:

import io, sys, psycopg2
conn = psycopg2.connect(dbname='sweden')
c = conn.cursor()
c.execute('CREATE TEMPORARY TABLE t("x/y" INTEGER)')
f = io.StringIO('4711')
c.copy_from(f, 't', columns=['"x/y"'])
c.execute('SELECT * FROM t')
print(list(c))

I.e包括用于";有趣的";列名。Imho,必须这样做有点难看,但再说一遍,文档明确表示表名需要这样做,所以列以相同的方式工作是有道理的。

最新更新