Importieren von bestimmten spalten einer csv Datei?

Ist es möglich mittels des COPY Befehls nur bestimmte spalten einer CSV-Datei zu Importieren?


COPY t_trans 
FROM 'd:\transaktion.csv '
WITH
   CSV
   HEADER
   DELIMITER AS ';'

MfG
Sibob

Scheinbar nicht. Was spricht dagegen, die CSV-Datei vorher mit Tools wie awk aufzubereiten?

echo "1;2;3;4" | awk 'BEGIN{FS=";"}{printf("%s;%s\n",$1,$3)}'

Dann hast Du nur noch die 1. und 3. Spalte.


Andreas

Der Import vorgang läuft nicht immer auf einem Linux. Und wenn ich die Datei vorher mittels tools bearbeite, kann ich sie auch gleich so im code importieren. Ich wollte halt nur (Rechen)Zeit sparen…


MfG
Sibob

Naja, awk gibt es auch für Fenster. Andere Lösung: COPY in eine Import-Tabelle und von da mit SELECT der nötigen Spalten in die eigentliche Zieltabelle. Aber das ist dann wohl eher mehr (Rechen)zeit.

Was ich jetzt nicht probiert habe: was passiert bei CSV-Dateien mit Header und der Angabe der Spalten beim COPY? Wäre natürlich dann nett, wenn das gefiltert werden würde. Kannst es ja mal testen und hier Bescheid geben…

Andreas

Funktioniert leider nicht. Hatte ichn auch schon probiert. Bei angabe der Header heist es nur das er die erste Zeile ignoriert. Naja, danke dennoch.



MfG
Sibob