Hoe importeer ik CSV-bestandsgegevens in een PostgreSQL-tabel?

Hoe kan ik een opgeslagen procedure schrijven die gegevens uit een CSV-bestand importeert en de tabel vult?


Antwoord 1, autoriteit 100%

Bekijk dit kort artikel.


Oplossing hier geparafraseerd:

Maak je tafel:

CREATE TABLE zip_codes 
(ZIP char(5), LATITUDE double precision, LONGITUDE double precision, 
CITY varchar, STATE char(2), COUNTY varchar, ZIP_CLASS varchar);

Kopieer gegevens van uw CSV-bestand naar de tabel:

COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' WITH (FORMAT csv);

Antwoord 2, autoriteit 33%

Als u geen toestemming heeft om COPYte gebruiken (wat werkt op de db-server), kunt u in plaats daarvan \copygebruiken (wat werkt in de db-client) . Gebruik hetzelfde voorbeeld als Bozhidar Batsov:

Maak je tafel:

CREATE TABLE zip_codes 
(ZIP char(5), LATITUDE double precision, LONGITUDE double precision, 
CITY varchar, STATE char(2), COUNTY varchar, ZIP_CLASS varchar);

Kopieer gegevens van uw CSV-bestand naar de tabel:

\copy zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV

Houd er rekening mee dat \copy … op één regel moet worden geschreven en zonder een ; aan het einde!

U kunt ook de kolommen specificeren die moeten worden gelezen:

\copy zip_codes(ZIP,CITY,STATE) FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV

Zie de documentatie voor COPY:

Verwar COPY niet met de psql-instructie \copy. \copy roept COPY FROM STDIN of COPY TO STDOUT aan, en haalt dan de gegevens op in een bestand dat toegankelijk is voor de psql-client. De toegankelijkheid van bestanden en toegangsrechten zijn dus afhankelijk van de client in plaats van de server wanneer \copy wordt gebruikt.

en let op:

Voor identiteitskolommen schrijft het COPY FROM-commando altijd de kolomwaarden die zijn opgegeven in de invoergegevens, zoals de INSERT-optie OVERRIDING SYSTEM VALUE.


Antwoord 3, autoriteit 11%

Een snelle manier om dit te doen is met de Python-pandabibliotheek (versie 0.15 of hoger werkt het beste). Dit zal het maken van de kolommen voor u afhandelen – hoewel het duidelijk is dat de keuzes die het maakt voor gegevenstypen misschien niet zijn wat u wilt. Als het niet helemaal doet wat je wilt, kun je altijd de ‘create table’-code gebruiken die als sjabloon is gegenereerd.

Hier is een eenvoudig voorbeeld:

import pandas as pd
df = pd.read_csv('mypath.csv')
df.columns = [c.lower() for c in df.columns] #postgres doesn't like capitals or spaces
from sqlalchemy import create_engine
engine = create_engine('postgresql://username:password@localhost:5432/dbname')
df.to_sql("my_table_name", engine)

En hier is wat code die je laat zien hoe je verschillende opties instelt:

# Set it so the raw sql output is logged
import logging
logging.basicConfig()
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
df.to_sql("my_table_name2", 
          engine, 
          if_exists="append",  #options are ‘fail’, ‘replace’, ‘append’, default ‘fail’
          index=False, #Do not output the index of the dataframe
          dtype={'col1': sqlalchemy.types.NUMERIC,
                 'col2': sqlalchemy.types.String}) #Datatypes should be [sqlalchemy types][1]

4, Autoriteit 2%

Zoals Paul vermeld, import werken in pgAdmin:

Klik met de rechtermuisknop op tafel – & gt; import

selecteer lokaal bestand, het formaat en de codering

hier is een duits pgAdmin GUI screenshot:

 pgAdmin import GUI

vergelijkbaar wat je kunt doen met DbVisualizer (ik heb een rijbewijs, niet zeker over gratis versie)

klik met de rechtermuisknop op een tafel – & gt; Importeren Tabelgegevens …

 DbVisualizer import GUI


5

Gebruik deze SQL code

   copy table_name(atribute1,attribute2,attribute3...)
    from 'E:\test.csv' delimiter ',' csv header

het trefwoord header laat de DBMS weten dat het csv-bestand een header met attributen heeft

ga voor meer informatie naar http://www.postgresqltutorial.com/ import-csv-bestand-in-posgresql-table/


Antwoord 6

Persoonlijke ervaring met PostgreSQL, wacht nog steeds op een snellere manier.

1. Maak eerst een tabelskelet als het bestand lokaal is opgeslagen:

   drop table if exists ur_table;
    CREATE TABLE ur_table
    (
        id serial NOT NULL,
        log_id numeric, 
        proc_code numeric,
        date timestamp,
        qty int,
        name varchar,
        price money
    );
    COPY 
        ur_table(id, log_id, proc_code, date, qty, name, price)
    FROM '\path\xxx.csv' DELIMITER ',' CSV HEADER;

2. Als het \path\xxx.csv op de server staat, heeft postgreSQL niet de
om toegang te krijgen tot de server, moet u het .csv-bestand importeren via de ingebouwde functionaliteit van pgAdmin.

Klik met de rechtermuisknop op de tabelnaam en kies importeren.

voer hier de afbeeldingsbeschrijving in

Als je nog steeds een probleem hebt, raadpleeg dan deze tutorial.
http://www.postgresqltutorial.com/import-csv-file- into-posgresql-table/


Antwoord 7

Hoe importeer ik CSV-bestandsgegevens in een PostgreSQL-tabel?

stappen:

  1. Moet verbinding maken met de postgresql-database in terminal

    psql -U postgres -h localhost
    
  2. Moet een database maken

    create database mydb;
    
  3. U moet een gebruiker maken

    create user siva with password 'mypass';
    
  4. Verbinden met database

    \c mydb;
    
  5. Moet een schema maken

    create schema trip;
    
  6. Moet een tabel maken

    create table trip.test(VendorID int,passenger_count int,trip_distance decimal,RatecodeID int,store_and_fwd_flag varchar,PULocationID int,DOLocationID int,payment_type decimal,fare_amount decimal,extra decimal,mta_tax decimal,tip_amount decimal,tolls_amount int,improvement_surcharge decimal,total_amount
    );
    
  7. Importeer csv-bestandsgegevens naar postgresql

    COPY trip.test(VendorID int,passenger_count int,trip_distance decimal,RatecodeID int,store_and_fwd_flag varchar,PULocationID int,DOLocationID int,payment_type decimal,fare_amount decimal,extra decimal,mta_tax decimal,tip_amount decimal,tolls_amount int,improvement_surcharge decimal,total_amount) FROM '/home/Documents/trip.csv' DELIMITER ',' CSV HEADER;
    
  8. Vind de gegeven tabelgegevens

    select * from trip.test;
    

Antwoord 8

IMHO, de handigste manier is om “CSV-gegevens importeren in postgresql, op de comfortabele manier 😉“, met behulp van csvsqlvan csvkit, een python-pakket dat kan worden geïnstalleerd via pip.


Antwoord 9

DBeaver Community Edition (dbeaver.io) maakt het triviaal om verbinding te maken met een database en vervolgens een CSV-bestand te importeren om te uploaden naar een PostgreSQL-database. Het maakt het ook gemakkelijk om query’s uit te voeren, gegevens op te halen en resultatensets te downloaden naar CSV, JSON, SQL of andere veelgebruikte gegevensindelingen.

Het is een FOSS multi-platform databasetool voor SQL-programmeurs, DBA’s en analisten die alle populaire databases ondersteunt: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto , enz. Het is een levensvatbare FOSS-concurrent van TOAD voor Postgres, TOAD voor SQL Server of Toad voor Oracle.

Ik heb geen banden met DBeaver. Ik ben dol op de prijs (GRATIS!) en de volledige functionaliteit, maar ik zou willen dat ze deze DBeaver/Eclipse-toepassing meer zouden openen en het gemakkelijk zouden maken om analyse-widgets aan DBeaver / Eclipse toe te voegen, in plaats van gebruikers te verplichten te betalen voor het jaarlijkse abonnement van $ 199. om grafieken en diagrammen rechtstreeks in de applicatie te maken. Mijn Java-coderingsvaardigheden zijn roestig en ik heb geen zin om weken opnieuw te leren hoe Eclipse-widgets te bouwen (alleen om te ontdekken dat DBeaver waarschijnlijk de mogelijkheid heeft uitgeschakeld om widgets van derden aan de DBeaver Community Edition toe te voegen.)

Kunnen DBeaver-hoofdgebruikers die Java-ontwikkelaars zijn, enig inzicht geven in de stappen voor het maken van analysewidgets die kunnen worden toegevoegd aan de Community-editie van DBeaver?


Antwoord 10

U kunt een bash-bestand maken als import.sh (dat uw CSV-indeling een tab-scheidingsteken is)

#!/usr/bin/env bash
USER="test"
DB="postgres"
TBALE_NAME="user"
CSV_DIR="$(pwd)/csv"
FILE_NAME="user.txt"
echo $(psql -d $DB -U $USER  -c "\copy $TBALE_NAME from '$CSV_DIR/$FILE_NAME' DELIMITER E'\t' csv" 2>&1 |tee /dev/tty)

En voer dan dit script uit.


Antwoord 11

Je hebt 3 opties om CSV-bestanden naar PostgreSQL te importeren:
Gebruik eerst de opdracht COPY via de opdrachtregel.

voer hier de afbeeldingsbeschrijving in

Ten tweede, met behulp van de pgAdmin-tool voor importeren/exporteren.

voer hier de afbeeldingsbeschrijving in

Ten derde, een cloudoplossing zoals Skyvia gebruiken die het CSV-bestand van een online locatie haalt, zoals een FTP-bron of een cloudopslag zoals Google Drive.

voer hier de afbeeldingsbeschrijving in

Je kunt het artikel lezen waarin dit allemaal wordt uitgelegd op hier.


Antwoord 12

Door een willekeurige client te gebruiken, gebruikte ik datagrip, ik maakte een nieuwe database & klik vervolgens binnen het standaardschema (openbaar) van de database met de rechtermuisknop op de database & doe dan

Import Data from file

kies het csv-bestand uit de locatie & kies dan

Import File --> Formats as TSV --> ensure each column name of the data csv file contributes to the column name of tables.

Csv-bestand importeren


Antwoord 13

Mijn idee is om je CSV om te zetten in SQL-query’s, ik hoop dat het je kan helpen.

  1. Open tool CSV converteren om SQL online in te voegen
  2. Plak of upload uw CSV-bestand in het deelvenster Data Source
  3. Scroll naar het paneel Table Generator
  4. Klik op Copy to clipboardof Download

Voorbeeld:

id,name
1,Roberta
2,Oliver

De uitvoer van SQL-query’s:

CREATE TABLE tableName 
(
    id  varchar(300),
    name    varchar(300)
);
INSERT INTO tableName (id,name)
VALUES
    ('1', 'Roberta'),
    ('2', 'Oliver');

Other episodes