2016-11-28 1 views
0

abzufragen Postgres verwenden Ich habe eine Abfrage schrieb die Tabellen in einer DatenbankWie aus einer Datenbank in eine andere

SELECT table_name 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' 
AND table_schema NOT IN 
('pg_catalog', 'information_schema'); 

Abfrage gibt Ergebnisse aus der falschen Datenbank aufzulisten. Es wählt automatisch die erste Datenbank aus der Liste der Datenbanken in Postgres aus.

Wie gebe ich die abzufragende Datenbank an? ‚J220190_data‘ ist die Datenbank abzufragen

Ich habe versucht, Dinge wie:

SELECT table_name 
FROM information_schema.tables 
WHERE Databases = 'j220190_data' 
AND table_schema NOT IN 
('pg_catalog', 'information_schema'); 

SELECT table_name 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' AND 
WHERE Databases = 'j220190_data' 
AND table_schema NOT IN 
('pg_catalog', 'information_schema'); 
+2

... – jarlh

+0

„* Wie gebe ich die Datenbank * abfragen“ „fine Works, aber es funktioniert nicht.“ - Sie können nicht Sie müssen zuerst _connect_ auf die andere Datenbank. Postgres unterstützt keine datenbankübergreifenden Abfragen –

+0

"* Es wählt automatisch die erste Datenbank aus der Liste der Datenbanken in Postgres *" - das ist falsch. Diese Abfrage gibt die Informationen der Datenbank zurück, mit der Sie gerade verbunden sind. –

Antwort

0

Wenn Sie zu Postgres wählen Datenbank verbinden;
zum Beispiel:

psql mydb 

und nachdem Sie die Auswahl posten, denn wenn man Whit diese wählen versuchen, postgres Kontrollen auf Standard-Datenbank.

+0

Fehler: Syntaxfehler bei oder nahe "psql"? – John

+1

@John: [psql] (https://www.postgresql.org/docs/current/static/reference-client.html) ist ein ** Befehlszeilenprogramm **, keine SQL-Anweisung. –

+0

Wenn Sie bei Postgres db verbinden, können Sie bei db verbinden, die Sie wollen, versuchen Sie mit psql j220190_data, wenn Ihre Datenbank das ist. Sie verbinden offensichtlich von Shell –

0

Wenn ich richtig verstanden habe, können Sie eine andere Datenbank mit dblink() abfragen.

erstellen Erweiterung CREATE EXTENSION dblink;

SELECT tbl.* 
FROM dblink('dbname=DB1 port=5432 
      host=localhost user=usr password=123', 'SELECT table_name 
FROM information_schema.tables 
WHERE table_type = ''BASE TABLE'' 
AND table_schema NOT IN(''pg_catalog'', ''information_schema'');') 
AS tbl(table_name varchar(30)); 
Verwandte Themen