Copying (exporting) and importing a partitioned table in PostgreSQL - postgresql

I would like to export a partitioned table in PostgreSQL and then import it into the same table (already created with all the relations, etc.) in another PostgreSQL database. Is it possible, how could it be done?
I am using the export function of the pgAdmin tool and I get the following error:
"ERROR: cannot copy from partitioned table HINT: Try the COPY (SELECT
...) TO variant".

Related

I am unable to alter table engine while importing SQL dump file in clustered environment it generates error

I am importing the SQL dump file in MySQL NDB Clustering Environment All the tables are imported successfully on node1. but they are not clustered on node 2. For this execute the following command:
Alter Table su_contribution ENGINE=NDBCLUSTER;
This command is executed successfully with some tables but not with all tables with some tables it generates the error:
I want to import the dump sql dump file but facing these issues:

How to DROP tables from specific database-schema in Postgresql?

I am new to Postgresql and so far I have not found a way to drop a table from specific database. To give some context:
We are doing a synchronization from Oracle to PostgreSQL of 5 tables. In postgres I have a database SoloCopy and the schema is the default public. In the Postgresql instance we have also 2 more databases SoloSynch and postgres (the default one).
What I want to do is to select SoloCopy database and:
DROP TABLE public.table1;
When I do the above DROP statement table1 is deleted only from the database that was selected when opening SQL Query. But I want to specify the database before that and to be irrelevant from where the SQL Query was open. How can I do that?
I found an answer on my own. Setup can be found here:
Psql in Task Scheduler does not run a file script
Basically I needed to use PSQL and with the connection string there I connect to a specific DB, which I can drop the tables from. The details for PGPASSWORD and the .bat file I ended up creating are in the link above. Had to start everything from CMD and switch to psql from there.

Clone database and it's tables structure to another database (without data)

I have already known query to clone like:
CREATE DATABASE db_dest WITH TEMPLATE db_src OWNER postgres
But that query also cloned the data in the tables. I want to clone all tables and it's structures in the database, but not the data. How can I do this?
I'm not sure if is SQL comand for this. but you can try
create backoup in PGadmin and in dump option select only schema option and then restore it to new db.

Drop DB2 database if exist

I would like to write db2 command which find out first database exist or not and if exist that data base then drop this database and create a new updated database .
Please help for same
There is not a command or language in DB2 that support that instruction. You have to define what to do when the given name exist as an alias of a database (not the real name of the database), drop the alias? rename it?
The script will look like:
List the database directory and filter the name and the alias (db2 list db directory). Filtering can be done in linux with Awk or Grep, in Windows with Filter.
If there is a database alias with that name, then YOU decide what to do.
Instead if there is a database name with that name, then drop it (db2 drop db xxx)
Create the database.
If there is an error of existent database in the system (SQL1005N), then catalog it and drop it (db2 catalog db xxx, db2 drop db xxx)
Retry the database creation.
First query system table, in db2 for zos table SYSIBM.SYSDATABASE or SYSIBM.SYSTABLES, in db2 LUW version table SYSCAT.tables . If there are rows in query, database exists.
In LUW, you can do:
--#SET TERMINATOR #
BEGIN
DECLARE TABLE_NOT_FOUND CONDITION FOR SQLSTATE '42704';
DECLARE CONTINUE HANDLER FOR TABLE_NOT_FOUND;
EXECUTE IMMEDIATE 'DROP TABLE myschema.mytable';
END #
You can convert this snippet into a function that receives the schema name and table name.
calling this function will let you drop the table if exist:
CALL FNC.DROP_IF_EXISTS('TABLENAME')!

How to use psql to copy rows?

I have 2 dbs on two different servers.
How can I copy using psql all the missing rows from db1 table to db2 table ?
If this is not possible.. How can I copy the entire table ?
Can you use a contrib module? If so, how about trying dblink. More information here
This is not possible with psql directly using a single SQL statement because you cannot connect to two different servers at the same time.
The only way you can do it:
connect to db1
export the table contents using psql's \copy command (if you have access to the server, you can also use the SQL statement COPY
connect to db1
import the text file using \copy or COPY depending on where the input file is located