2017-11-22 1 views
0

Mit psql können wir eine Abfrage-Ausgabe in eine CSV-Datei exportieren.psql Export-Abfrage-Ausgabe in eine neue Tabelle in einem neuen SQLite3 db

psql -d somedb -h localhost -U postgres -p 5432 -c "\COPY (select * from sometable) TO 'sometable.csv' DELIMITER ',' CSV HEADER;" 

Allerdings muss ich die Abfrage-Ausgabe in eine neue Tabelle in einer neuen SQLite3-Datenbank exportieren.

Ich schaute auch auf pg_dump, aber war nicht in der Lage, es herauszufinden, einen Weg damit.

Der Grund, warum ich möchte, ohne zwischen CSV Umwandlung in einen neuen sqlite3 db es als eine neue Tabelle exportieren, weil

  1. Die Ausgabe der Abfrage in GBs laufen wird, ich habe Einschränkungen Speicherplatz - so anstatt csv export und dann erstellen Sie eine neue sqlite3 db, müssen Sie dies in einem Schuss

Antwort

0

Meine Lösung verwendet die Standard-INSERT-SQL-Anweisungen.

Es ist das gleiche Tabellenschema erforderlich. Der Befehl grep entfernt die problematischen Zeichen wie -- oder Leerzeilen.

pg_dump --data-only --inserts --table=sometable DBNAME | grep -v -e '^SET' -e '^$' -e '^--' | sqlite3 ./target.db 

Ich hoffe, dies wird Ihnen helfen.

+0

hilfreich - Ich gab es eine erste Aufnahme mit dem Befehl 'pg_dump -U postgres --data-only --inserts --table = \" myPgTable \ "myPgDb | grep -v -e '^ SET' -e '^ $' -e '^ -' | sqlite3./mySqlite3Db.db' - es wirft ein paar Fehlerzeilen 'Fehler: nahe Zeile 8: in der Nähe von" SET ": Syntaxfehler' jedoch sehe ich 'mySqlite3Db.db' Größe weiter steigen - kann nicht sagen, ob das narrensicher ist Da der Prozess sehr langsam ist - läuft er für mehr als eine Stunde mit nur 4 MB Daten exportiert - Quellentabelle hat ~ 75 Millionen Datensätze - jede Idee, die Geschwindigkeit zu verbessern? Die Befehlsausgabe 'pg_dump' wird hier eingefügt - https://pastebin.com/rP4bStcb – user3206440

Verwandte Themen