Копирование записей из mysql в pg sql с полем serial id - PullRequest
0 голосов
/ 27 мая 2020

У меня есть веб-приложение базы данных, которое в настоящее время использует базу данных mysql. Мы переходим от mysql к pg sql, поэтому мы перемещаем данные из mysql db в новый pg sql db. В данных есть заголовочные записи в одной таблице, подробные записи в другой таблице. Записи заголовка имеют последовательное поле для идентификатора записи, а подробные записи имеют поле numeri c, которое содержит идентификатор записи заголовка до t ie подробный отчет для записи заголовка. Поскольку приложение, использующее эти данные, полагается на базу данных для генерации идентификаторов записей при создании записей, такая же структура существует в целевой базе данных pg sql. Как можно скопировать данные из базы данных mysql в базу данных pg sql и сохранить связь «заголовок / идентификатор детали»? Казалось бы, записи заголовков получат любое сериализованное значение, которое будет следующим для их идентификатора, а подробные записи будут добавлены, все еще сохраняя старый идентификатор записи заголовка mysql.

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Postgres использует последовательности для отслеживания автоматического увеличения первичных ключей. Вы можете вставить свой первичный и внешний ключи как есть, начиная с MySQL. Затем вам нужно будет обновить последовательности, чтобы получить максимальный (id) на основе ваших данных.

см .: https://www.postgresql.org/docs/current/functions-sequence.html

например:

SELECT setval('your_table_name_seq', select max(id) from your_table_name);

Обратите внимание на суффикс "_seq" для параметра setval.

0 голосов
/ 27 мая 2020
class Employee(NamedTuple):  # inherit from typing.NamedTuple
    name: str
    id: int = 3  # default value

employee = Employee('Guido')
assert employee.id == 3
...