Wie kann ich eine gespeicherte Prozedur schreiben, die Daten aus einer CSV-Datei importiert und die Tabelle auffüllt?
postgresql
csv
postgresql-copy
Vardhan
quelle
quelle
Antworten:
Schauen Sie sich diesen kurzen Artikel an .
Lösung hier umschrieben:
Erstellen Sie Ihre Tabelle:
Kopieren Sie Daten aus Ihrer CSV-Datei in die Tabelle:
quelle
COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV HEADER;
einfügenWenn Sie keine Berechtigung zur Verwendung haben
COPY
(die auf dem Datenbankserver funktioniert), können Sie\copy
stattdessen verwenden (was auf dem Datenbankclient funktioniert). Verwenden Sie das gleiche Beispiel wie Bozhidar Batsov:Erstellen Sie Ihre Tabelle:
Kopieren Sie Daten aus Ihrer CSV-Datei in die Tabelle:
Sie können auch die zu lesenden Spalten angeben:
Siehe die Dokumentation zu COPY :
und Anmerkung:
quelle
COPY
und\copy
ist viel mehr als nur Berechtigungen, und Sie können nicht einfach ein `` hinzufügen, damit es magisch funktioniert. Siehe die Beschreibung (im Zusammenhang mit dem Export) hier: stackoverflow.com/a/1517692/157957Eine schnelle Möglichkeit hierfür ist die Python-Pandas-Bibliothek (Version 0.15 oder höher funktioniert am besten). Auf diese Weise werden die Spalten für Sie erstellt - obwohl die Auswahlmöglichkeiten für Datentypen möglicherweise nicht Ihren Wünschen entsprechen. Wenn es nicht ganz das tut, was Sie wollen, können Sie immer den als Vorlage generierten Code "Tabelle erstellen" verwenden.
Hier ist ein einfaches Beispiel:
Und hier ist ein Code, der Ihnen zeigt, wie Sie verschiedene Optionen einstellen:
quelle
if_exists
Parameter so eingestellt werden, dass er eine vorhandene Tabelle ersetzt oderdf.to_sql("fhrs", engine, if_exists='replace')
df.to_sql()
ist wirklich langsam, können Sied6tstack.utils.pd_to_psql()
von d6tstack verwenden, um Leistungsvergleich zu sehenSie können auch pgAdmin verwenden, das eine grafische Benutzeroberfläche für den Import bietet. Das wird in diesem SO-Thread gezeigt . Der Vorteil der Verwendung von pgAdmin besteht darin, dass es auch für entfernte Datenbanken funktioniert.
Ähnlich wie bei den vorherigen Lösungen müssten Sie Ihre Tabelle jedoch bereits in der Datenbank haben. Jede Person hat ihre eigene Lösung, aber normalerweise öffne ich die CSV in Excel, kopiere die Überschriften, füge Special mit Transposition in ein anderes Arbeitsblatt ein, platziere den entsprechenden Datentyp in der nächsten Spalte und kopiere ihn einfach und füge ihn in einen Texteditor ein zusammen mit der entsprechenden SQL-Tabellenerstellungsabfrage wie folgt:
quelle
Die meisten anderen Lösungen hier erfordern, dass Sie die Tabelle im Voraus / manuell erstellen. Dies ist in einigen Fällen möglicherweise nicht praktikabel (z. B. wenn die Zieltabelle viele Spalten enthält). Der folgende Ansatz kann daher nützlich sein.
Wenn Sie den Pfad und die Spaltenanzahl Ihrer CSV-Datei angeben, können Sie die folgende Funktion verwenden, um Ihre Tabelle in eine temporäre Tabelle zu laden, die wie folgt benannt wird
target_table
:Es wird angenommen, dass die oberste Zeile die Spaltennamen enthält.
quelle
public
)Wie Paul erwähnte, funktioniert der Import in pgAdmin:
Rechtsklick auf Tabelle -> Importieren
Wählen Sie die lokale Datei, das Format und die Codierung aus
hier ist ein deutscher pgAdmin GUI Screenshot:
Ähnliches können Sie mit DbVisualizer tun (ich habe eine Lizenz, bin mir nicht sicher über die kostenlose Version)
Rechtsklick auf eine Tabelle -> Tabellendaten importieren ...
quelle
quelle
Erstellen Sie zuerst eine Tabelle
Verwenden Sie dann den Befehl copy, um die Tabellendetails zu kopieren:
Kopieren Sie den Tabellennamen (C1, C2, C3 ....)
von 'Pfad zu Ihrer CSV-Datei' Trennzeichen ',' CSV-Header;
Vielen Dank
quelle
Verwenden Sie diesen SQL-Code
Das Schlüsselwort header teilt dem DBMS mit, dass die CSV-Datei einen Header mit Attributen enthält
Weitere Informationen finden Sie unter http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
quelle
Persönliche Erfahrung mit PostgreSQL, immer noch auf einen schnelleren Weg wartend.
1. Erstellen Sie zuerst ein Tabellenskelett, wenn die Datei lokal gespeichert ist:
2. Wenn sich die Datei \ path \ xxx.csv auf dem Server befindet und postgreSQL nicht über die Berechtigung zum Zugriff auf den Server verfügt, müssen Sie die CSV-Datei über die in pgAdmin integrierte Funktionalität importieren.
Klicken Sie mit der rechten Maustaste auf den Tabellennamen und wählen Sie Importieren.
Wenn Sie immer noch Probleme haben, lesen Sie bitte dieses Tutorial. http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
quelle
Wie importiere ich CSV-Dateidaten in eine PostgreSQL-Tabelle?
Schritte:
Postgresql-Datenbank muss im Terminal verbunden werden
Datenbank muss erstellt werden
Müssen Benutzer erstellen
Mit Datenbank verbinden
Müssen Schema erstellen
Müssen Tabelle erstellen
Importieren Sie CSV-Dateidaten nach postgresql
Finden Sie die angegebenen Tabellendaten
quelle
IMHO ist der bequemste Weg, " CSV-Daten in postgresql importieren, den bequemen Weg ;-) " mit csvsql von csvkit , einem über pip installierbaren Python-Paket, zu folgen .
quelle
In Python können Sie diesen Code für die automatische Erstellung von PostgreSQL-Tabellen mit Spaltennamen verwenden:
Es ist auch relativ schnell, ich kann mehr als 3,3 Millionen Zeilen in ca. 4 Minuten importieren.
quelle
Sie können auch pgfutter oder noch besser pgcsv verwenden .
pgfutter ist ziemlich fehlerhaft, ich würde pgcsv empfehlen.
So geht's mit pgcsv:
quelle
Wenn Sie einen einfachen Mechanismus zum Importieren aus Text / Parse Multiline CSV benötigen, können Sie Folgendes verwenden:
DBFiddle Demo
quelle
Mit DBeaver Community Edition (dbeaver.io) ist es einfach, eine Verbindung zu einer Datenbank herzustellen und anschließend eine CSV-Datei zum Hochladen in eine PostgreSQL-Datenbank zu importieren. Es macht es auch einfach, Abfragen zu stellen, Daten abzurufen und Ergebnismengen in CSV, JSON, SQL oder andere gängige Datenformate herunterzuladen.
Es ist ein plattformübergreifendes Datenbank-Tool von FOSS für SQL-Programmierer, Datenbankadministratoren und Analysten, das alle gängigen Datenbanken unterstützt: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto usw. Es ist ein brauchbarer FOSS-Konkurrent von TOAD für Postgres, TOAD für SQL Server oder Toad für Oracle.
Ich bin nicht mit DBeaver verbunden. Ich mag den Preis (KOSTENLOS!) Und die volle Funktionalität, aber ich wünschte, sie würden diese DBeaver / Eclipse-Anwendung mehr öffnen und es einfacher machen, DBeaver / Eclipse Analyse-Widgets hinzuzufügen, anstatt dass Benutzer nur für das 199-Dollar-Jahresabonnement bezahlen müssen um Grafiken und Diagramme direkt in der Anwendung zu erstellen. Meine Java-Codierungsfähigkeiten sind verrostet und ich möchte keine Wochen brauchen, um neu zu lernen, wie man Eclipse-Widgets erstellt (nur um festzustellen, dass DBeaver wahrscheinlich die Möglichkeit deaktiviert hat, Widgets von Drittanbietern zur DBeaver Community Edition hinzuzufügen).
Können DBeaver-Hauptbenutzer, die Java-Entwickler sind, einen Einblick in die Schritte zum Erstellen von Analyse-Widgets geben, die der Community Edition von DBeaver hinzugefügt werden sollen?
quelle
Erstellen Sie eine Tabelle und benötigen Sie Spalten, die zum Erstellen einer Tabelle in einer CSV-Datei verwendet werden.
Öffnen Sie Postgres und der rechten Maustaste auf Zieltabelle , die Sie laden möchten und wählen Sie importieren und aktualisieren Sie die folgenden Schritte in Dateioptionen Abschnitt
Durchsuchen Sie nun Ihre Datei unter dem Dateinamen
Wählen Sie CSV im Format
Codierung als ISO_8859_5
Nun gehe zu Misc. Optionen und überprüfen Sie die Kopfzeile und klicken Sie auf Importieren.
quelle
Ich habe ein kleines Tool erstellt, das
csv
Dateien super einfach in PostgreSQL importiert , nur einen Befehl, und es erstellt und füllt die Tabellen. Leider verwenden derzeit alle automatisch erstellten Felder den Typ TEXTDas Tool finden Sie unter https://github.com/eduardonunesp/csv2pg
quelle
psql -h 192.168.99.100 -U postgres mydatabase -c "COPY users FROM 'users.csv' DELIMITER ';' CSV"
? Ich denke, der Teil, in dem die Tabelle erstellt wird, ist schön, aber da jedes Feld Text ist, ist es nicht besonders nützlich