psql -tAc "..." Ergebnis dann in WHERE id in (...) verwenden

psql -tAc "..." Ergebnis dann in WHERE id in (...) verwenden

am 24.08.2011 10:55:05 von Thomas Guettler

Hallo,

mit psql -tAc 'SELECT spalte WHERE ...' schreibe ich in eine Datei:

Ergebnis: zeilen.txt
zeile1
zeile2
....

Später möchte ich dieses Ergebnis dann wiederverwenden:

SELECT * from ... WHERE foo in ('zeile1', 'zeile2', 'zeile3', ...)

Prinzipiell kann man relativ einfach mit sed|awk|python die Datei zeilen.txt
zu dem gewünschten SQL Statement ändern.

Aber vielleicht gibt es einen leichteren Weg.

Problem verstanden? Wie macht ihr das?

Kann man auch beim Ausgeben in die Datei das passende Quoting machen? Also =
ggf mit Hochkomma
bei Zeichenketten, bei Integer aber nicht.

Thomas


--=20
Thomas Guettler, http://www.thomas-guettler.de/
E-Mail: guettli (*) thomas-guettler + de

--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein

Re: psql -tAc "..." Ergebnis dann in WHERE idin (...) verwenden

am 24.08.2011 11:20:51 von Philipp Lawitschka

Hi Thomas,

benötigst du die Daten unbedingt in der Datei? Falls nicht, würde ich=
=20
das mit einem Subquery machen:

SELECT * FROM table1 WHERE foo IN (SELECT bar FROM table2)

Grüße
Philipp


Am 24.08.2011 10:55, schrieb Thomas Guettler:
> Hallo,
>
> mit psql -tAc 'SELECT spalte WHERE ...' schreibe ich in eine Datei:
>
> Ergebnis: zeilen.txt
> zeile1
> zeile2
> ...
>
> Später möchte ich dieses Ergebnis dann wiederverwenden:
>
> SELECT * from ... WHERE foo in ('zeile1', 'zeile2', 'zeile3', ...)
>
> Prinzipiell kann man relativ einfach mit sed|awk|python die Datei zeile=
n.txt
> zu dem gewünschten SQL Statement ändern.
>
> Aber vielleicht gibt es einen leichteren Weg.
>
> Problem verstanden? Wie macht ihr das?
>
> Kann man auch beim Ausgeben in die Datei das passende Quoting machen? A=
lso ggf mit Hochkomma
> bei Zeichenketten, bei Integer aber nicht.
>
> Thomas
>
>


--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein

Re: psql -tAc "..." Ergebnis dann in WHERE id

am 24.08.2011 11:23:52 von Andreas Kretschmer

Thomas Guettler wrote:

> Hallo,
>=20
> mit psql -tAc 'SELECT spalte WHERE ...' schreibe ich in eine Datei:
>=20
> Ergebnis: zeilen.txt
> zeile1
> zeile2
> ...
>=20
> Später möchte ich dieses Ergebnis dann wiederverwenden:
>=20
> SELECT * from ... WHERE foo in ('zeile1', 'zeile2', 'zeile3', ...)
>=20
> Prinzipiell kann man relativ einfach mit sed|awk|python die Datei zeile=
n.txt
> zu dem gewünschten SQL Statement ändern.
>=20
> Aber vielleicht gibt es einen leichteren Weg.
>=20
> Problem verstanden? Wie macht ihr das?

Vielleicht. Du willst also gleich das als String so haben, daß Du das
für die IN ( ... ) verwenden kannst.

kretschmer@tux:~$ psql -tAc 'SELECT val from foo' test
10
12
13
13
14
14
kretschmer@tux:~$ psql -tAc "SELECT string_agg(quote_literal(val),',') fr=
om foo" test
'10','12','13','13','14','14'


Sowas in der Art?



Andreas
--=20
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknown)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889=
°

--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein