簡體   English   中英

如何更改列的順序,使其不會破壞 pg_restore 的導入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM