首页 > 解决方案 > 如何使用 python 将多个 CSV 文件导入 PostgreSQL 表?

问题描述

我有许多每日 csv 文件要导入 Postgres。下面的 python 代码用于导入单个 csv 文件。如何导入批处理 cvs 文件?谢谢!

import psycopg2

con = psycopg2.connect(
    database="xxxx", 
    user="xxxx", 
    password="xxxx", 
    host="xxxx")

cur = con.cursor()
file = open('path/to/directory/client_record_2020-01-01.csv', 'r')
next(file)
cur.copy_from(file, "table_name", columns=('col1', 'col2', 'col3', 'col4', 'col5'), sep=",")

con.commit()
con.close()

标签: python-3.xpostgresql

解决方案


让我们尝试将我们的文件名放在一个列表中,然后遍历该列表一次做一个copy_from()。也许:

import psycopg2

file_names = [
    'path/to/directory/client_record_2020-01-01.csv'
]

con = psycopg2.connect(database="xxxx", user="xxxx", password="xxxx", host="xxxx")

for file_name in file_names:
    with open(file_name, 'r') as file_in:
        next(file_in)
        with con.cursor() as cur:
            cur.copy_from(file_in, "table_name", columns=('col1', 'col2', 'col3', 'col4', 'col5'), sep=",")
        con.commit()

con.close()

推荐阅读