python中有没有一种简单的方法可以逐表从sqlite迁移到postgres?我使用的是peewee,可以生成sqlite转储,但没有psql可用于导入postgres。有python中的包吗?我还将peewee用作orm,并讨论了生成模式位,问题是数据。数据库有点大,只有1.3gb
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
1条答案
按热度按时间x0fgdtte1#
你有很多选择。最简单的方法可能是使用sqlite的“.dump”shell命令生成sql。有许多选项或方法可以做到这一点。您可以使用“.dump”转储所有模式和数据,然后对转储文件进行任何修改,然后将其加载到postgres中。
要将表“my_table”的行数据转储为csv,您可以使用:
然后,您可以使用postgres批量加载CSV:
peewee可以以多种格式转储数据,因此这是一个选项:
另一种选择是使用postgres外部数据 Package 器。然后连接到psqldb,使用fdw连接sqlite数据库,并使用psqlshell直接从一个数据库复制到另一个数据库。
https://github.com/pgspider/sqlite_fdw