Re: managing primary key conflicts while restoring data to table with existing data

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Rob Sargent <robjsargent(at)gmail(dot)com>, Krishnakant Mane <kkmane(at)riseup(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: managing primary key conflicts while restoring data to table with existing data
Date: 2019-09-25 18:33:43
Message-ID: f332f9a7-eab2-c9ba-144b-80971cb298c8@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 9/25/19 8:04 AM, Rob Sargent wrote:
>
>
> On Sep 25, 2019, at 8:24 AM, Krishnakant Mane <kkmane(at)riseup(dot)net
> <mailto:kkmane(at)riseup(dot)net>> wrote:
>
>>
>> On 25/09/19 7:50 PM, Adrian Klaver wrote:
>>> On 9/25/19 12:15 AM, Krishnakant Mane wrote:
>>>> Hello all,
>>>>
>>>> I have been using postgresql for an enterprise quality account's
>>>> automation and inventory management software called GNUKhata
>>>> <https://gnukhata.in>
>>>>
>>>> Our team is planning to add backup and restore function in the
>>>> software.
>>>>
>>>> But we don't want to dump the entire database and then restore the
>>>> same.
>>>>
>>>> What we are trying to do is to copy data specific to an organization.
>>>>
>>>> The challenge here is that I might copy all data (account heads,
>>>> bills, vouchers etc ) for one organization from an instance on one
>>>> machine.
>>>>
>>>> I take the archive in what ever format to another machine and now
>>>> attempt to restore.
>>>>
>>>> The risk here is for example if the primary key value for orgcode in
>>>> the organization table is 5, it might conflict with the data where I
>>>> am attempting it to be restored.
>>>>
>>>> Same holds true for bills, invoices etc.
>>>>
>>>> A certain account head with accountcode 1 might be already present
>>>> on the second machine.
>>>>
>>>> I am not expecting the users to empty all data from the destination
>>>> machine before restoring a backup.
>>>>
>>>> The reason is that an auditor may have many client's data and one
>>>> can't predict what primary key values are going to come from a backup.
>>>>
>>>> Basically I can even say this is a copy paste instead of a pure
>>>> backup and restore.
>>>>
>>>> Can any one suggest how to handle such conflicts?
>>>
>>> Hard to say. If the data is held in common tables(bills, vouchers,
>>> etc)then the only thing I see happening is changing the PK values to
>>> an unused value. That could turn into a nightmare though. Not only
>>> that you lose the connection to the original data source. If the data
>>> can be broken out into separate tables then I could see placing them
>>> in their own schema.
>>>
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Krishnakant Mane,
>>>> Project Founder and Leader,
>>>> GNUKhata <https://gnukhata.in/>
>>>> //(Opensource Accounting, Billing and Inventory Management Software)//
>>>
>>
>> Hi Adrian,
>>
>> Even I am thinnking to do some kind of upsert with this situation.

So to be clear the tables you are working can have records from multiple
organizations in a single table?

>>
>> And I would have to set the pkey to an unassigned value when there is
>> conflict.

I am seeing nextval() in your future:)

>>
>> I may also choose to revamp the serial by timestamps but don't know if
>> the target customers would like it.

I would avoid that. In my opinion timestamps are to too volatile to
serve as a PK. If you are going to change I would go with the previous
suggestion of UUID:
https://www.postgresql.org/docs/11/datatype-uuid.html

Not sure your customers would like that either.

>>
>> --
>> Regards,
>> Krishnakant Mane,
>> Project Founder and Leader,
>> GNUKhata <https://gnukhata.in/>
>> //(Opensource Accounting, Billing and Inventory Management Software)//
> It would likely be easier to rethink your backup and restore plan.
> Putting each restore into its own space would be one tack.

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Marco Ippolito 2019-09-25 19:34:19 could not accept SSL connection: sslv3 alert bad certificate
Previous Message Adrian Klaver 2019-09-25 18:21:16 Re: Upgrading old server