如何解决读取Windows 10中用于将数据库从Postgres复制到CSV的路径时出错
我正在尝试从postgres数据库中获取一个表并将该csv的内容复制到一个表中。我遇到的错误是psycopg2.error.SyntaxError: syntax error at or near "C"
,我看过其他有相同错误的人,但是问题是我已经尝试了每个人的建议,并且正在打印自己的方法以确保正确无误,已将该图复制并粘贴到文件管理器中,它会打开csv,因此我对该问题感到困惑。
path1 = r'C:\Users\Hank\Documents'
tb = 'test29'
path = os.path.join(path1,"Testing.csv")
print(f"This is the output path fro the csv {path}")
def csv_to_postgres():
sql = f"""COPY {tb} FROM {path} DELIMITER ',' CSV HEADER;"""
cur.execute(sql)
conn.commit()
print(f"Printing to {path} was successful.")
csv_to_postgres()
我也尝试将字符串设置为"sql query {}".format(path)
和"sql query %s" path
,但三个都不起作用。打印出的路径已放入Windows 10搜索功能并打开CSV。
感谢评论,我还可以使用os.path.exists(path)
查看路径是否存在,并且返回True
,所以我迷路了。
要进一步添加此内容,我可以通过更改Everyone的文件权限来使该命令在PgAdmin中起作用,但是相同的确切代码仍未在Python中运行。
解决方法
下面的代码是我的问题的解决方案。基本上,问题是我首先必须使用python打开CSV,然后使用copy_expert
来将其复制到其中。tb
是表名,我相信您在sql中需要STDIN
查询。
sql = f"""COPY {tb} FROM STDIN DELIMITER ',' CSV HEADER;"""
with open(path) as f:
cur.copy_expert(sql,f)
conn.commit()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。