自动将 csv 转储到新的 Postgres 表中



我有数千个csv,每个csv都有10000多条记录。我正在寻找最有效的方法,以最少的时间和精力将这些数据转储到 Postgres DB 中的表中。

COPY 通常是最好的解决方案。取决于您的约束。

COPY table_name FROM 'path_readable_by_postgres/file.cvs';

您可以将文件cat在一个大文件中以快速导入数据。

查看 ta https://www.postgresql.org/docs/current/static/sql-copy.html 了解更多详情。

您可以使用 pandas 库来读取和转换数据(如果需要(,使用 sqlalchemy 创建 postgres 引擎,使用 psycopg2 将数据加载到 postgresql 中。我假设您已经在 Postgres DB 中创建表。尝试类似下面的代码

import pandas as pd
from sqlalchemy import create_engine
import pandas as pd
import psycopg2
# Drop "Unnamed: 0", as it often causes problems in writing to table
pd.read_csv({path/to/file.csv}, index_col={index_column}).drop(["Unnamed: 0"], axis=1)
# Now simply load your data into database
engine = create_engine('postgresql://user:password@host:port/database')
try:
pd_table.to_sql({'name_of_table_in_postgres_db'}, engine, if_exists='append')
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
print('Closed connection to the database')

最新更新