当前位置: 首页 > 知识库问答 >
问题:

“/”处或附近的psycopg2模块语法错误

陶睿
2023-03-14

我想通过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=",")

它总是返回错误psycopg2。错误。SyntaxError:在“/”处或附近出现语法错误

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

共有1个答案

冉锋
2023-03-14

这对我有效:

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))

也就是说,在“有趣”的列名中包含明确的双引号。恕我直言,你不得不这么做有点难看,但是再一次,文档明确表示表名需要这样做,所以列的工作方式是一样的。

 类似资料:
  • 问题内容: 我有一个小查询,并在其旁边放了一个联合查询。但是,联合中存在语法错误。 这是我收到的错误 问题答案: 我知道出了什么问题。您必须在查询的末尾且仅在末尾下订单。它给了我一个错误,因为它认为查询已结束。 做到了。

  • 我在Postgres中执行了这个SQL语句 而且 是表名 是具有整数数据类型的列名。 我想根据用户的输入将数据类型修改为boolean或text或varchar(256)等。但是当我运行查询时,我得到了错误 错误:“modify”或“modify”附近有语法错误 不确定是什么问题。右侧查询需要帮助。

  • 问题内容: 我创建了这个表: 我尝试运行以下postgres脚本: 为什么会出现此语法错误? 问题答案: 支持版本 根据以上@klin的评论,仅 PostgreSQL 9.5及 更高版本支持。 独特的约束 在添加唯一索引。目前,该列上没有任何约束,因此该列上没有冲突的可能性。 但是,如果您不希望该列是唯一的,那么您打算遇到什么冲突/您希望通过该操作解决的问题是什么? 请参阅https://www.

  • 在这里,我需要在python中的postgresql表中插入一些值。 我尝试了下面的代码,但出现了一个错误,即“psycopg2.ProgrammingError:语法错误位于或接近“st”\r,referer:http://localhost:8080/" 请解决这个问题,提前感谢......

  • 我试图通过使用postgres数据库设置Spring Boot项目。我的实体是:- 用户 作用 用户_角色 我的< code > application . properties 文件如下所示 所以每当我运行这个应用程序。在postgresql数据库上成功创建了user_role和role表。但用户实体抛出异常。 错误说:- 正如您所看到的实体上的错误点。但是当应用程序连接到mysql数据库时,相

  • 我正在使用带有Doobie和PostgreSQL的Quill( artifact版本为0.13.1)。 此代码 将在运行时出现错误消息: org.postgresql.util。PSQLException:错误:在org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecuteorImpl.java:2553)处的