我需要将数据从一些源数据源加载到 Postgres 数据库。为此,我首先将数据写入临时 CSV 文件,然后使用 COPY FROM 查询将数据从 CSV 文件加载到 Postgres 数据库。我在 Python 上完成所有这些工作。
代码如下所示:
table_name = 'products'
temp_file = "'C:\\Users\\username\\tempfile.csv'"
db_conn = psycopg2.connect(host, port, user, password, database)
cursor = db_conn.cursor()
query = """COPY """ + table_name + """ FROM """ + temp_file + " WITH NULL AS ''; """
cursor.execute(query)
我想避免写入中间文件的步骤。相反,我想写入一个 Python 对象,然后使用 COPY FROM 文件方法将数据加载到 postgres 数据库。
我知道这种使用 psycopg2 的 copy_from 方法的技术,该方法将数据从 StringIO 对象复制到 postgres 数据库。但是,出于某种原因,我不能使用 psycopg2,因此,我不希望我的 COPY FROM 任务依赖于库。我希望它是 Postgres 查询,它也可以由任何其他 postgres 驱动程序运行。
请建议一种更好的方法来执行此操作,而无需写入中间文件。