[英]How to I change the order of my columns so it doesn't break an import with pg_restore
我正在嘗試將實時 Postgres DB 中的數據導出到本地 Postgres DB,並使用pg_dump
(通過 DataGrip)將數據庫轉儲到 tar 文件中。 我正在使用 DataGrip 對話框中的 INSERT 選項,它給出了以下內容。
--dbname="XXX" --format=t --file="XXX/DataGrip Backup/{timestamp}" --inserts
當我嘗試使用pg_restore
(再次通過 DataGrip)導入 tar 文件時,我的一張表(最重要的一張)不會導入。
我得到的錯誤是:
pg_restore:錯誤:無法執行查詢:錯誤:數字類型的輸入語法無效:“AUD”
該表有一個數字字段和一個 varchar 字段。 一種用於折扣,另一種用於使用的貨幣。
這是來自使用 MoneyField 的 model (Django):
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 DB 時,表中兩個字段的順序是:
我假設這是在 tar 字段中給出字段的順序。 但是當我檢查本地數據庫時,順序是不同的:
我認為我沒有做任何事情,因為 Django 正在創建表格,因此我假設順序?
有沒有辦法可以改變它來導入數據?
我需要以不同的方式導出數據嗎? 我真的只想導入實際數據。 我似乎已經不得不在某個地方使用--ignore-triggers
來阻止遷移表和其他問題的一大堆問題。
對 pg_dump 使用選項--column-inserts
(而不是--inserts
)。
這將生成將限定目標列的 INSERT 語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.