将SQLite转储迁移到Kubernetes上部署的PostgreSQL

时间:2019-03-22 19:44:11

标签: postgresql sqlite kubernetes

我试图将SQLite转储迁移到Kubernetes上部署的PostgreSQL,但是在连接各个点时遇到问题。

我使用以下命令创建了一个SQLite转储:

sqlite3 sqlite.db .dump > dump.sql

现在,我想将其迁移到我的Kubernetes部署中。 我已使用以下方式连接到它:

psql -h <external IP of node> -U postgresadmin --password -p <port that i got using kubectl get svc postgres>

到目前为止,一切似乎都可行,现在我遇到了问题,导致我有两个问题!

  1. 我已经看到一些有关将SQLite迁移到PostgreSQL的问题,看来此命令可以做到: psql /path/to/psql -d database -U username -W < /the/path/to/dump.sql。如果转储包含多个表,我是否必须在PostgreSQL中创建相同的表(空但具有相同的列等),还是该命令自动执行此操作?我相信我会根据我在问题2中分享的输出得出结论,但是它还会自动转到下一张表格吗?
  2. 如何结合问题1中的命令将其迁移到kubernetes部署?我尝试将< dump.sql添加到用于连接它的命令中,但得到以下输出:
CREATE TABLE
INSERT 0 1
ERROR:  relation "first_report" does not exist
ERROR:  current transaction is aborted, commands ignored until end of transaction block
ERROR:  current transaction is aborted, commands ignored until end of transaction block
ERROR:  current transaction is aborted, commands ignored until end of transaction block
ERROR:  current transaction is aborted, commands ignored until end of transaction block

因此,显然我在做错什么...转储包含三个表,first_reportsecond_reportrelation_table

1 个答案:

答案 0 :(得分:1)

  1. 您绝对不需要在PostgreSQL中创建空表,您的转储文件应包含create table语句。我建议仅在不添加数据sqlite3 sqlite.db .schema > dump.sql

  2. 的情况下进行测试
  3. 要从容器内的转储中还原数据库,只需运行

    kubectl exec -it postgres-pod -- psql --username admin --d testdb < dump.sql

如果没有帮助,请与您共享 dump.sql 文件(仅适用于架构)