So generieren Sie ein schema aus einer CSV, die für eine PostgreSQL Kopieren
Gegeben eine CSV mit mehreren Dutzend oder mehr Spalten, wie kann ein "schema" erstellt werden, die verwendet werden kann in einer CREATE TABLE-SQL-Ausdruck von PostgreSQL für die Verwendung mit dem KOPIEREN-tool?
Sehe ich viele Beispiele für das KOPIEREN-tool und basic CREATE TABLE Ausdrücken, aber nichts geht ins detail über die Fälle, wenn Sie eine potenziell prohibitiv Anzahl der Spalten für die manuelle Erstellung des Schemas.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die CSV ist nicht übermäßig groß und auf Ihrem lokalen Rechner, dann csvkit ist die einfachste Lösung. Es enthält auch eine Reihe von anderen Versorgungsunternehmen für die Arbeit mit CSVs, also ist es ein nützliches tool wissen im Allgemeinen.
Im einfachsten Fall die Eingabe in der shell:
wird, drucken Sie die erforderlichen
CREATE TABLE
SQL-Befehl, der gespeichert werden kann, um eine Datei mit Umlenkung der Ausgabe.Wenn Sie auch eine Verbindungszeichenfolge
csvsql
wird erstellen Sie die Tabelle und laden Sie die Datei in einem Rutsch:Es gibt auch Optionen, um anzugeben, die den Geschmack der SQL-und CSV-Dateien, mit der Sie arbeiten. Sie sind dokumentiert in der eingebauten Hilfe:
Einigen anderen tools auch machen-schema-Ableitung einschließlich:
Jede dieser Funktionen zum Lesen einer CSV-Datei (und andere Formate) in einer tabellarischen Datenstruktur, die in der Regel als eine DataFrame oder ähnliches, Herleitung der Spalte Arten in den Prozess. Sie haben dann die anderen Befehle entweder schreiben Sie ein äquivalentes SQL-schema oder laden Sie das DataFrame direkt in einer angegebenen Datenbank zu. Die Wahl des Werkzeugs hängt von der Menge von Daten, wie Sie gespeichert ist, Eigenheiten der CSV, die Ziel-Datenbank und die Sprache, in der Sie arbeiten möchten.
Grundsätzlich sollten Sie bereiten die Daten (einschließlich deren Struktur), die außerhalb der Datenbank mit fertigen tools oder mithilfe von python, ruby oder eine Sprache Ihrer Wahl.
Jedoch der Mangel an solchen Möglichkeiten, die Sie tun können, viel mit plpgsql.
Erstellen von Tabellen mit text-Spalten
Dateien im csv-format enthalten keine Informationen über die Spalte Typen, primär-oder Fremdschlüssel etc.
Sie lassen sich relativ leicht erstellen Sie eine Tabelle mit text in Spalten und das kopieren von Daten zu.
Danach sollten Sie manuell ändern Arten von Spalten und fügen Sie Einschränkungen.
Beispiel Daten in der Datei
c:\data\test.csv
:Import:
Großen csv-Dateien
Oben Funktion importiert Daten zwei mal (vorübergehend und Ziel-Tabellen).
Bei großen Dateien kann dies einen erheblichen Verlust an Zeit und unnötige Last auf dem server.
Eine Lösung wäre die Aufteilung einer csv-Datei in zwei Dateien, eine mit Kopf und eine mit Daten.
Dann ist die Funktion sollte wie folgt Aussehen:
Verändern Spaltentypen
Können Sie versuchen, ändern Sie automatisch die Spalten-Typen, basierend auf deren Inhalt.
Sie können erfolgreich sein, wenn Sie den Umgang mit einfachen Typen und Daten in der Datei konsistent bleibt mit einem bestimmten format. Aber im Allgemeinen ist es eine komplexe Aufgabe und Funktionen nachfolgend soll betrachtet werden, nur als Beispiel.
Bestimmen eine Spalte geben, basierend auf Ihrem Inhalt (Bearbeiten-Funktion hinzufügen, um die gewünschten Umwandlungen):
Alter column-Datentypen mit der oben genannten Funktion:
Verwenden:
(gut, richtige Anerkennung von array-Typen ist ziemlich kompliziert)