首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自CSV的pg8000拷贝

来自CSV的pg8000拷贝
EN

Stack Overflow用户
提问于 2017-12-11 17:08:08
回答 2查看 1.6K关注 0票数 0

我在App烧瓶应用程序上使用pg8000,以便能够处理CSV文件并将其插入PSQL实例(托管在AZURE上)。

为什么我要使用pg8000而不是psycopg2?->,因为app引擎不支持psycopg2。

到目前为止,pg8000的文档并没有像psycopg2那样声明这样的函数。我还没有找到一个例子来实现这一点,在这样或任何其他地方,包括文档。

有人知道这是否可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-11 17:25:53

源代码的角度来看,似乎没有一种直接导入CSVs的方法,代码似乎也没有任何内置的INSERT查询包装器,因此可以

您确实可以选择手动使用CSV读取器和使用executemany

代码语言:javascript
复制
import csv
import pg8000

conn = pg8000.connect(user="postgres", password="C.P.Snow")
cursor = conn.cursor()

command = 'INSERT INTO book (title) VALUES (%s), (%s) RETURNING id, title'
with open('my-data.csv', 'rb') as fl:
    data = list(csv.reader(fl))
    conn.executemany(command, data)

请注意,根据数据的大小,最好使用islice

代码语言:javascript
复制
with open('my-data.csv', 'rb') as fl:
    reader = csv.reader(fl)
    slice = itertool.islice(reader, 100)
    while slice:
        conn.executemany(command, slice)
        slice = itertool.islice(reader, 100)
票数 2
EN

Stack Overflow用户

发布于 2018-02-13 10:14:10

正如在另一个问题这里中所建议的,您可以在对csv文件应用逻辑之前和在使用csv方法之前使用next方法。

很抱歉,事先没有插入作为对前一个答案的补充,但我没有足够的点这样做。

我也有同样的问题,我用下面的方法解决了这个问题。请注意,对我来说,正确的执行方法是在cursor对象上,而不是在conn上。

代码语言:javascript
复制
conn = pg8000.connect(user='username', password='password', host='host', port=5432, database='database name')
cursor = conn.cursor()

command = "INSERT INTO public.salesforce_accounts (field1, field2, field3, field4, field5, field6) VALUES (%s, %s, %s, %s, %s, %s)"
with open('test.csv', 'r') as file:
    next(file)
    data = list(csv.reader(file))
    cursor.executemany(command, data)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47757873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档