sql >> Database teknologi >  >> RDS >> PostgreSQL

Kan jeg automatisk oprette en tabel i PostgreSQL fra en csv-fil med overskrifter?

Der er et meget godt værktøj, der importerer tabeller til Postgres fra en csv-fil. Det er et kommandolinjeværktøj kaldet pgfutter (med binære filer til windows, linux osv.). En af dens store fordele er, at den også genkender attribut-/kolonnenavnene.

Brugen af ​​værktøjet er enkel. For eksempel hvis du vil importere myCSVfile.csv :

pgfutter --db "myDatabase" --port "5432" --user "postgres" --pw "mySecretPassword" csv myCSVfile.csv

Dette vil oprette en tabel (kaldet myCSVfile ) med kolonnenavnene taget fra csv-filens header. Derudover vil datatyperne blive identificeret ud fra de eksisterende data.

Et par bemærkninger:Kommandoen pgfutter varierer afhængigt af den binære du bruger, f.eks. det kunne være pgfutter_windows_amd64.exe (Omdøb den, hvis du har til hensigt at bruge denne kommando ofte). Ovenstående kommando skal udføres i et kommandolinjevindue (kør f.eks. cmd i Windows og sørg for pgfutter er tilgængelig). Hvis du gerne vil have et andet tabelnavn, skal du tilføje --table "myTable"; for at vælge et bestemt databaseskema bruger vi --schema "mySchema" . Hvis du har adgang til en ekstern database, brug --host "myHostDomain" .

Et mere udførligt eksempel på pgfutter for at importere myFile ind i myTable er denne:

pgfutter --host "localhost" --port "5432" --db "myDB" --schema "public" --table "myTable" --user "postgres" --pw "myPwd" csv myFile.csv

Mest sandsynligt vil du ændre nogle få datatyper (fra tekst til numerisk) efter importen:

alter table myTable
  alter column myColumn type numeric
    using (trim(myColumn)::numeric)


  1. Database vs tablespace, hvad er forskellen?

  2. Sådan ekskluderer du poster med bestemte værdier i sql select

  3. Ti almindelige trusler mod eksekveringsplanens kvalitet

  4. Let i en nøddeskal