python - 在 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()
我也尝试过 string as"sql query {}".format(path)
并且"sql query %s" path
这三个都没有工作。打印出的路径已放入 Windows 10 搜索功能并打开 CSV。
多亏了一条评论,我还看到我可以用它os.path.exists(path)
来查看路径是否存在并返回True
,所以我迷路了。
为了进一步补充这一点,我能够通过更改每个人的文件权限使命令在 PgAdmin 中工作,但相同的确切代码仍然没有在 Python 中运行。
解决方案
下面的代码是我的问题的解决方案。基本上问题是我首先必须用python打开CSV,然后用copy_expert
它来复制它。tb
是表名,我相信你需要STDIN
在sql查询中。
sql = f"""COPY {tb} FROM STDIN DELIMITER ',' CSV HEADER;"""
with open(path) as f:
cur.copy_expert(sql,f)
conn.commit()
推荐阅读
- python - 将 2 个列表与元组、列表和整数合并
- c# - 如何在列表视图中的文件资源管理器中区分 FileInfo 和 DirectoryInfo
- entity-framework - 当在 CRUD 中创建时显示其他列然后是外键
- python - 预期 LP_c_ubyte 实例而不是 str?
- css - 如何将不同大小的倾斜文本正确定位到特定区域?
- javascript - JavaScript 代码的概念性问题。请解释我得到的输出
- python - Python 中的 KeyConditions 和 KeyConditionExpression 失败
- google-chrome-extension - 使用 webRequest API 拦截脚本请求,编辑并发送回
- android - PreferenceFragmentCompat 影响其他片段的性能
- android - Xamarin 精度对比