From: | Ron <ronljohnsonjr(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Repear operations on 50 tables of the same schema? |
Date: | 2023-02-27 14:31:32 |
Message-ID: | cc7fd3d6-11c1-0583-9afe-e09555b112be@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 2/27/23 05:53, celati Laurent wrote:
>
> Good morning,
> I am new to Postgresql. I have 50 tables into a "ign" schema (schema other
> than public).
> I would like for each of these 50 tables:
>
> - Add a prefix to the name of the table: "IGN_bdTopo_"
> - Add a suffix to the table name: "_V1"
> - create a new "date" column of date type. And populate this field with
> the value: 06/15/2021
> - create a new "source" column of type varchar (length 50). And populate
> this field with the value: 'ign'.
> - move all the elements of these 50 tables (including all). from the "ign"
> schema to the "ign_v2" schema. Whether data, constraints, indexes.
>
> If someone could help me? Thank you so much.
This is what I'd do, just to get it done. It presumes you know bash
scripting, and how to use psql.
https://www.postgresql.org/docs/13/sql-createschema.html
https://www.postgresql.org/docs/13/sql-altertable.html
First, CREATE SCHEMA ign_v2;
Write a bash script that uses psql queries information_schema.tables.
There's be a for loop for all the tables.
Inside the loop, still using bash, and using psql:
1. create the new table name then execute "ALTER TABLE ... RENAME TO ...;",
2. ALTER TABLE (new_name) ADD COLUMN some_date DATE, ADD COLUMN some_source
varchar(50);
3. UPDATE (new_name) SET some_date = '2021-06-15'::date, some_source = 'ign';
4. ALTER TABLE (new_name) SET SCHEMA ign_v2;
--
Born in Arizona, moved to Babylonia.
From | Date | Subject | |
---|---|---|---|
Next Message | Erik Wienhold | 2023-02-27 15:17:10 | Re: ERROR: unsupported Unicode escape sequence - in JSON-type column |
Previous Message | Laurenz Albe | 2023-02-27 12:14:28 | Re: Event Triggers unable to capture the DDL script executed |