Как изменить порядок колонок, чтобы не нарушить импорт с помощью pg_restore

Я пытаюсь экспортировать данные из живой БД Postgres в локальную БД Postgres и использовал pg_dump (через DataGrip) для дампа базы данных в tar-файл. Я использую опцию INSERT из диалога DataGrip, которая дает следующее.

--dbname="XXX" --format=t --file="XXX/DataGrip Backup/{timestamp}" --inserts 

Когда я пытаюсь импортировать tar-файл с помощью pg_restore (снова через DataGrip), одна из моих таблиц (самая важная!) не импортируется

Ошибка, которую я получаю:

pg_restore: error: could not execute query: ERROR: неверный синтаксис ввода для типа numeric: "AUD"

В таблице есть числовое поле и поле varchar. Одно для скидки, другое для используемой валюты.

Это из модели (Django), использующей MoneyField:

coupon_discount = MoneyField(
    decimal_places=2, max_digits=10, null=True, default_currency="AUD", default=0.00
)

Примером данных, которые я импортирую, является:

Command was: INSERT INTO public.customers_customer VALUES (2557, '', NULL, 3, NULL, NULL, NULL, NULL, '2022-08-14 08:45:50.466306+00', '2022-08-14 08:45:50.466454+00', '2022-08-14 08:45:50.466459+00', 2559, '90h0nbJgDU', 0, 0.00, 'AUD', false, false, NULL, 1);
pg_restore: error: could not execute query: ERROR:  invalid input syntax for type numeric: "AUD"
LINE 1: ...10:31:35.347403+00', 2560, 'o4VxTmqlOa', 0, 0.00, 'AUD', fal...

Когда я смотрю на внешнюю БД Postgres, порядок двух полей в таблице следующий:

enter image description here

Я предполагаю, что это порядок, в котором поля указаны в поле tar. Но когда я проверяю локальную БД, порядок другой:

enter image description here

Я не думаю, что я сделал что-то для того, чтобы это было так, поскольку Django создает таблицы и поэтому я предполагаю порядок?

Есть ли способ изменить это, чтобы данные импортировались?

Нужно ли мне экспортировать данные другим способом? Я действительно просто хочу, чтобы фактические данные были импортированы. Кажется, мне уже приходится использовать --ignore-triggers где-то, чтобы остановить целый ряд проблем с таблицами миграции и другими.

Заранее спасибо за все, чем вы можете мне помочь.

Используйте опцию --column-inserts (вместо --inserts) для pg_dump.

Это создаст операторы INSERT, которые будут квалифицировать целевые столбцы.

Вернуться на верх