Перенос дампа SQLite в PostgreSQL, развернутый в Kubernetes - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь перенести дамп SQLite в PostgreSQL, развернутый в Kubernetes, но у меня возникают проблемы с подключением точек.

Я создал дамп 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_report, second_report и relation_table.

1 Ответ

1 голос
/ 27 марта 2019
  1. вам определенно не нужно создавать пустые таблицы в PostgreSQL, ваш файл дампа должен содержать create table операторов.Я бы порекомендовал протестировать только с дампом схемы без данных sqlite3 sqlite.db .schema > dump.sql

  2. Чтобы восстановить дб из дампа внутри контейнера, просто запустите

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

Если это не поможет, поделитесь файлом dump.sql (только схема)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...