From: | Ayden Gera <aydengera(at)gmail(dot)com> |
---|---|
To: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
Cc: | pgsql-novice(at)lists(dot)postgresql(dot)org |
Subject: | Re: PGDump question/issue |
Date: | 2025-04-26 10:19:39 |
Message-ID: | CANYJdWKsznOaaka97FRwHgDFJBTJ2YU9g_S-S5xC_rh+T1Vb0Q@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
Hi Laurenz,
Thank you very much for your reply.
Your assumption was close but not quite correct.
Database A is SaaS provided PGDump. it comes with Drop tables commands in
it. It has no row level security on it.
We want to daily populate DB A into a new DB B (supabase), but we want to
add row level security to DB B. Issue is the drop table commands in the
PGDump A we believe we will lose any RLS we put in place in DB B?
We could put data into a DB C (our own PG instance), then extract data only
from DB C with PGDump-a, and then insert that into DB B (supabase) but we
need a script to drop all data in DB B before uploading PGDump... What is
command we can use either separately or part of the restore PGDump commands
to first delete all data before restoring data into DB B with PGDump DB A?
Or we could put PGDump A into a separate Supabase Db B2, and then somehow
stream only that data into DB B.. but unsure if we can script dropping all
data automatically in DB B before DB2 streams data into it as data doesn't
always have keys/unique identifiers.. so don't want to risk data
double-ups.. dropping data from all table in DB B seems best.. but unclear
if streaming can accommodate some automated scripting to drop DB B before
it starts..?
Im open to any other ideas on how to get around the drop table that comes
in PG Dump from DB A.
Many Thanks.
Ayden
On Fri, Apr 25, 2025 at 6:15 PM Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
wrote:
> On Fri, 2025-04-25 at 09:50 +1200, Ayden Gera wrote:
> > Hoping someone may have a solution to this problem.
> > We get a daily PGDump file (@3Gb) from our SaaS provider (for BI
> purpose).
> > In it, it has a Drop Table IF Exists command..
> > This file has no row level security etc.
> > We want to use the same file to populate Supabase with and add row level
> > security.. but I believe the drop table will destroy the rls each day and
> > manually adding it back *unless mabe scripted) isn't an option.
> >
> > We have an inhouse Postgresql we can also use to potentially load and
> then
> > do its own PGDump with data only..
> >
> > But the other issue we have is the source tables don't always have any
> > unique keys that we can tell.. so to be safe and avoid data duplicate
> risk..
> > we prefer to delete the entire tables data before inserting..
> >
> > Does anyone have any suggestions on how to best automate the daily
> updating
> > of data into the supabase tables without losing any RLS we might
> configure
> > on those tables?
> > Or what commands should we run on our own PG to get our own data
> only/insert
> > + commands to drop all data in all tables before running it.
> >
> > I was also wondering if we could send PGDump from SaaS to Supabase Db1
> and
> > then stream data to DB2 (Prod) but unclear if we can and/or risk data
> > duplication risk if we cannot somehow delete the tables in Prod just
> before
> > streaming..
>
> I am not sure I understand correctly: your problem is that you want to copy
> data from a database (let's call it database A) to another database B.
> In the process, you want to wipe out all the data in B, but not the table
> definitions, because there are different row-level security policies on the
> tables in A and B.
>
> Correct?
>
> Then perhaps this will help:
>
> 1. export the object definitions from B:
>
> pg_dump -F c --schema-only -f dumpb B
>
> 2. export the data from A:
>
> pg_dump -F c --data-only -f dumpa A
>
> 3. drop database B, create it again and create all the objects:
>
> pg_restore -d postgres --clean --create --section=pre-data dumpb
>
> 4. restore the data from A into the new database:
>
> pg_restore -d B --section=data dumpa
>
> 5. restore the original index definitions and constraints:
>
> pg_restore -d B --section=post-data dumpb
>
> Yours,
> Laurenz Albe
>
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Sabino Mullane | 2025-04-26 12:04:43 | Re: PGDump question/issue |
Previous Message | Laurenz Albe | 2025-04-25 06:15:37 | Re: PGDump question/issue |