python - 如何加速 postgresql 中的 copy_expert?

标签 python django postgresql sql-update django-queryset

以下函数在 111 秒内导入了大约 60k 条记录。我听说其他人说 copy_from 和 copy_expert 在不到一分钟的时间内完成了 100 万条记录。与使用 copy_from 相比,使用 copy_expert 是否会减慢进程?我可以做些什么来优化它?

cursor = connection.cursor()
cursor.copy_expert('''
COPY employee_employee (name, slug, title, base, overtime, other, gross, benefits, ual, total, year, status, jurisdiction_id, notes)
FROM STDIN WITH (FORMAT csv, HEADER true, FORCE_NOT_NULL (status));
''', open(csv_fname),
)

至于相关变量,数据库连接来自Django(from django.db import connection)。数据库在我本地的 Macbook Pro 上,是 PostgreSQL 10。

最佳答案

在打开的文件中指定 buffering=2**10。

我认为这是 OSX 上的 psycopg2 的问题。我有同样的问题,它在 ubuntu 上运行得非常快。无论数据库是否在 OSX 和 Ubuntu 上,它在 OSX 上都很慢。我的 copy_expert 在 OSX 上花费了 13 分钟。当我更改 buffering=2**10 时,它从 13 分钟变为 7 秒。

关于python - 如何加速 postgresql 中的 copy_expert?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54709865/

相关文章:

python - Django 函数要求用户不登录

python - Twython - 如何将多个 Twitter 帐户与一个用户关联

ruby-on-rails - 改进低效查询

php - MySQL 触发器到 PostgreSql 触发器的转换

python - 如何用单个斜杠替换目录中的多个正斜杠?

python - Pandas /Python : Set value of new column based on row value and other DataFrame

python - 使用 pandas 从文本中确定上下文

python - Django bulk_create 成对的一对一对象

python - django: grappelli: 路由失败

sql - 缺少日期的 PostgreSQL 聚合