CSV omzetten naar PostgreSQL
Zet je CSV-bestand neer en krijg een PostgreSQL-script met CREATE TABLE- en INSERT-statements. Elke kolom krijgt een type, en elke correctie wordt vermeld met rij en kolom.
5 rijen geconverteerd, 8 correcties, geen afgewezen
| Rij | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- Written by IntoSQL for PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE ventas_2024 (
folio text NOT NULL,
cliente text NOT NULL,
ciudad text NOT NULL,
fecha date NOT NULL,
importe numeric(6,2),
pagado boolean NOT NULL
);
INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
('00412', 'Peña Muñoz', 'Mérida', '2024-02-15', 1234.50, TRUE),
('00413', 'José Ángel Ruiz', 'León', '2024-02-03', 99.90, FALSE),
('00414', 'Zoë Ortíz', 'Querétaro', '2024-02-29', NULL, TRUE),
('00415', 'Ñuño Castañeda', 'Oaxaca', '2024-02-28', 7.25, FALSE),
('00416', 'Iñaki Olaizola', 'Mazatlán', '2024-03-11', 980.75, TRUE);
COMMIT;
Correcties
- Het bestand was gecodeerd in windows‑1252; het is omgezet naar UTF-8.
- De koprij staat op rij 4; de rijen erboven zijn weggelaten.
- Rij 10 ("TOTAL") is een totaal en is daarom weggelaten.
- Voorloopnullen behouden in "Folio": 00412 blijft 00412, opgeslagen als tekst.
- 15/02/2024 bewijst dat de datums in "Fecha" met de dag beginnen, dus 03/02/2024 wordt gelezen als 2024‑02‑03.
- Getallen in "Importe" gebruiken een decimale komma: 1.234,50 wordt gelezen als 1234.50.
- N/A in "Importe" gelezen als leeg (1 van 5 waarden).
- "Pagado" bevat ja- en nee-woorden (sí, no), opgeslagen als boolean.
Je bestand wordt op deze computer omgezet en nooit geüpload.
Andere voorbeelden:
Van CSV naar PostgreSQL, kolom voor kolom
Het voorbeeld hierboven, ventas_2024.csv, zoals IntoSQL het voor PostgreSQL schrijft: wat elke kolom in het bestand bevat, welk type ze krijgt en hoe haar eerste waarde in het script terechtkomt.
| In het bestand | Eerste waarde | Kolom | Type in PostgreSQL | In het script |
|---|---|---|---|---|
| Folio | 00412 | folio | text | '00412' |
| Cliente | Peña Muñoz | cliente | text | 'Peña Muñoz' |
| Ciudad | Mérida | ciudad | text | 'Mérida' |
| Fecha | 15/02/2024 | fecha | date | '2024-02-15' |
| Importe | 1.234,50 | importe | numeric(6,2) | 1234.50 |
| Pagado | sí | pagado | boolean | TRUE |
Het script in PostgreSQL laden
De download is een standaard .sql-bestand. Voer het uit met de eigen tools van PostgreSQL.
Vanuit een terminal
psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sqlON_ERROR_STOP laat psql stoppen bij de eerste fout. Het script draait in één transactie, dus een mislukte import laat de database zoals hij was.
Vanuit een databasetool
Open het script in pgAdmin of DBeaver in een queryvenster en voer het uit.
Zonder scriptPro
IntoSQL Pro laadt het bestand rechtstreeks in PostgreSQL vanuit de desktopapp of de opdrachtregel, zonder een script te schrijven.
intosql load ventas_2024.csv --into postgres://user@localhost/mydbWat je moet weten over CSV-bestanden en PostgreSQL
Wat IntoSQL leest in CSV-bestanden
- De codering wordt herkend, ook Windows-1252 en UTF-16, zodat accenten en ñ intact aankomen.
- Het scheidingsteken wordt herkend: komma, puntkomma, tab of verticale streep. Met een puntkomma worden decimale komma's zoals 1.234,50 als getallen gelezen.
- Waarden tussen aanhalingstekens kunnen scheidingstekens en regeleinden bevatten.
Wat je moet weten over PostgreSQL
- Decimale getallen behouden hun exacte cijfers als numeric(p,s), en datums met tijdverschil worden timestamptz.
- Tekst in PostgreSQL kan het NUL-teken niet bevatten, dus het wordt verwijderd uit de waarden die het hebben.
- Het script draait in één transactie, dus een mislukte import laat niets half af achter.
Hoe elk soort waarde in PostgreSQL wordt opgeslagen
| Waarde | PostgreSQL |
|---|---|
| Ja en nee | boolean |
| Gehele getallen | integer |
| Grote gehele getallen | bigint |
| Decimale getallen | numeric(p,s) |
| Drijvendekommagetallen | double precision |
| Datums | date |
| Tijdstippen | time |
| Datums met tijd | timestamp |
| Datums met tijd en tijdverschil | timestamptz |
| Tekst | text |
Vragen over CSV naar PostgreSQL
Staat je vraag er niet bij? Schrijf ons via de contactpagina en een mens antwoordt. Contactpagina
Hoe zet ik CSV om naar PostgreSQL?
Zet je bestand neer op de converter bovenaan deze pagina. Die vindt de kopregel, leest elke waarde en schrijft het PostgreSQL-script, met elke correctie vermeld. Download het script en voer het uit met psql.
Wat als mijn CSV puntkomma's of tabs gebruikt?
Het scheidingsteken wordt herkend: komma, puntkomma, tab of verticale streep. Je kunt het ook instellen onder Meer opties. Met een puntkomma worden decimale komma's zoals 1.234,50 als getallen gelezen.
Welke PostgreSQL-types gebruikt het?
Ja/nee-waarden worden boolean, gehele getallen integer, decimalen numeric(p,s), datums date, datums met tijd timestamp en tekst text. De groottes volgen uit de langste waarde in elke kolom.
Blijven voorloopnullen behouden in PostgreSQL?
Ja. Een code zoals 00412 blijft tekst, dus PostgreSQL slaat hem op als text en het script schrijft hem als '00412'.
Kan het de data zonder script in PostgreSQL laden?
Ja, met IntoSQL Pro. De desktopapp en de opdrachtregel maken verbinding met PostgreSQL en laden de rijen rechtstreeks, nadat ze eerst de tabel hebben aangemaakt.
Hoe groot mag het CSV-bestand zijn?
De browser leest een CSV terwijl die binnenstroomt, dus bestanden van meerdere gigabytes werken. Op een laptop met Apple M4 converteert de opdrachtregel een CSV van 174 MB met een miljoen rijen in minder dan een seconde.