我试图将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>
到目前为止,一切似乎都可行,现在我遇到了问题,导致我有两个问题!
psql /path/to/psql -d database -U username -W <
/the/path/to/dump.sql
。如果转储包含多个表,我是否必须在PostgreSQL中创建相同的表(空但具有相同的列等),还是该命令自动执行此操作?我相信我会根据我在问题2中分享的输出得出结论,但是它还会自动转到下一张表格吗?< 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_report
,second_report
和relation_table
。
答案 0 :(得分:1)
您绝对不需要在PostgreSQL中创建空表,您的转储文件应包含create table
语句。我建议仅在不添加数据sqlite3 sqlite.db .schema > dump.sql
要从容器内的转储中还原数据库,只需运行
kubectl exec -it postgres-pod -- psql --username admin --d testdb < dump.sql
如果没有帮助,请与您共享 dump.sql 文件(仅适用于架构)