postgresql—在python中,是否有一种简单的方法可以将数据库数据从sqlite逐表迁移到postgres?

ncgqoxb0  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(299)

python中有没有一种简单的方法可以逐表从sqlite迁移到postgres?我使用的是peewee,可以生成sqlite转储,但没有psql可用于导入postgres。有python中的包吗?我还将peewee用作orm,并讨论了生成模式位,问题是数据。
数据库有点大,只有1.3gb

x0fgdtte

x0fgdtte1#

你有很多选择。最简单的方法可能是使用sqlite的“.dump”shell命令生成sql。有许多选项或方法可以做到这一点。您可以使用“.dump”转储所有模式和数据,然后对转储文件进行任何修改,然后将其加载到postgres中。
要将表“my_table”的行数据转储为csv,您可以使用:

sqlite> .headers on
sqlite> .mode csv
sqlite> .output model_data.csv
sqlite> SELECT * FROM my_table;

然后,您可以使用postgres批量加载CSV:

COPY table_name(col1, ...)
FROM 'model_data.csv'
DELIMITER ','
CSV HEADER;

peewee可以以多种格式转储数据,因此这是一个选项:

models = [User, Tweet]
for model in models:
    outfile = '%s.csv' % model._meta.table_name
    with open(outfile, 'w', newline='') as f:
        writer = csv.writer(f)
        row_iter = model.select().tuples().iterator()
        writer.writerows(row_iter)

另一种选择是使用postgres外部数据 Package 器。然后连接到psqldb,使用fdw连接sqlite数据库,并使用psqlshell直接从一个数据库复制到另一个数据库。
https://github.com/pgspider/sqlite_fdw

相关问题