Langsung ke konten

Konversi CSV ke PostgreSQL

Letakkan file CSV Anda untuk mendapatkan skrip PostgreSQL dengan pernyataan CREATE TABLE dan INSERT. Setiap kolom diberi tipe, dan setiap perbaikan dicantumkan beserta baris dan kolomnya.

File Anda
csvventas_2024.csvFile contoh, 357 B
Database Anda

5 baris dikonversi, 8 perbaikan, tidak ada yang ditolak

Tampilkan
Baris pertama ventas_2024.csv, dengan setiap perbaikan ditandai
Baris
500412Peña MuñozMérida15/02/20241.234,50sí
600413José Ángel RuizLeón03/02/202499,90no
700414Zoë OrtízQuerétaro29/02/2024N/Así
800415Ñuño CastañedaOaxaca28/02/20247,25no
900416Iñaki OlaizolaMazatlán11/03/2024980,75sí
-- 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;

Perbaikan

  1. File ditulis dalam windows‑1252; file itu dikonversi ke UTF-8.
  2. Baris judul ada di baris 4; baris di atasnya tidak disertakan.
  3. Baris 10 ("TOTAL") adalah total, jadi tidak disertakan.
  4. Nol di depan dipertahankan di "Folio": 00412 tetap 00412, disimpan sebagai teks.
  5. 15/02/2024 membuktikan tanggal di "Fecha" diawali hari, jadi 03/02/2024 dibaca sebagai 2024‑02‑03.
  6. Angka di "Importe" memakai koma desimal: 1.234,50 dibaca sebagai 1234.50.
  7. N/A di "Importe" dibaca sebagai kosong (1 dari 5 nilai).
  8. "Pagado" berisi kata ya dan tidak (sí, no), disimpan sebagai boolean.

File Anda dikonversi di komputer ini dan tidak pernah diunggah.

Contoh lain:

Dari CSV ke PostgreSQL, kolom demi kolom

Contoh di atas, ventas_2024.csv, seperti yang ditulis IntoSQL untuk PostgreSQL: isi setiap kolom di file, tipe yang didapatnya, dan bagaimana nilai pertamanya ditulis di skrip.

Di fileNilai pertamaKolomTipe PostgreSQLDi skrip
Folio00412foliotext'00412'
ClientePeña Muñozclientetext'Peña Muñoz'
CiudadMéridaciudadtext'Mérida'
Fecha15/02/2024fechadate'2024-02-15'
Importe1.234,50importenumeric(6,2)1234.50
PagadosípagadobooleanTRUE

Muat skrip ke PostgreSQL

Hasil unduhan adalah file .sql biasa. Jalankan dengan alat bawaan PostgreSQL.

Dari terminal

psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sql

ON_ERROR_STOP membuat psql berhenti pada error pertama. Skrip berjalan dalam satu transaksi, jadi pemuatan yang gagal membiarkan database seperti semula.

Dari alat database

Di pgAdmin atau DBeaver, buka skrip di jendela kueri lalu jalankan.

Tanpa skripPro

IntoSQL Pro memuat file langsung ke PostgreSQL dari aplikasi desktop atau command line, tanpa menulis skrip.

intosql load ventas_2024.csv --into postgres://user@localhost/mydb

Yang perlu diketahui tentang file CSV dan PostgreSQL

Yang dibaca IntoSQL di file CSV

  • Pengodean terdeteksi, termasuk Windows-1252 dan UTF-16, sehingga aksen dan ñ tiba utuh.
  • Pemisah terdeteksi: koma, titik koma, tab, atau garis tegak. Dengan titik koma, koma desimal seperti 1.234,50 dibaca sebagai angka.
  • Nilai dalam tanda kutip dapat berisi pemisah dan baris baru.

Yang perlu diketahui tentang PostgreSQL

  • Desimal mempertahankan digit persisnya sebagai numeric(p,s), dan tanggal dengan selisih waktu menjadi timestamptz.
  • Teks PostgreSQL tidak dapat memuat karakter NUL, jadi karakter itu dihapus dari nilai yang memilikinya.
  • Skrip berjalan dalam satu transaksi, jadi impor yang gagal tidak meninggalkan apa pun setengah jadi.

Cara setiap jenis nilai disimpan di PostgreSQL

NilaiPostgreSQL
Ya dan tidakboolean
Bilangan bulatinteger
Bilangan bulat besarbigint
Desimalnumeric(p,s)
Bilangan floating-pointdouble precision
Tanggaldate
Jamtime
Tanggal dengan jamtimestamp
Tanggal dengan jam dan selisih waktutimestamptz
Tekstext

Pertanyaan tentang CSV ke PostgreSQL

Tidak terjawab di sini? Tulis ke kami dari halaman kontak, dan seseorang akan membalas. Halaman kontak

Bagaimana cara mengonversi CSV ke PostgreSQL?

Letakkan file Anda di konverter di bagian atas halaman ini. Konverter menemukan baris judul, membaca setiap nilai, dan menulis skrip PostgreSQL, dengan mencantumkan setiap perbaikan yang dibuat. Unduh skripnya dan jalankan dengan psql.

Bagaimana jika CSV saya memakai titik koma atau tab?

Pemisah dideteksi: koma, titik koma, tab, atau garis tegak. Anda juga bisa mengaturnya di Opsi lainnya. Dengan titik koma, koma desimal seperti 1.234,50 dibaca sebagai angka.

Tipe PostgreSQL apa saja yang digunakan?

Nilai ya dan tidak menjadi boolean, bilangan bulat integer, desimal numeric(p,s), tanggal date, tanggal dengan waktu timestamp, dan teks text. Ukuran diambil dari nilai terpanjang di setiap kolom.

Apakah nol di depan tetap ada di PostgreSQL?

Ya. Kode seperti 00412 tetap berupa teks, jadi PostgreSQL menyimpannya sebagai text dan skrip menuliskannya sebagai '00412'.

Bisakah data dimuat ke PostgreSQL tanpa skrip?

Bisa, dengan IntoSQL Pro. Aplikasi desktop dan command line terhubung ke PostgreSQL dan memuat baris langsung, setelah membuat tabelnya terlebih dahulu.

Seberapa besar file CSV yang bisa dipakai?

Browser membaca CSV sambil dialirkan, jadi file berukuran beberapa gigabyte bisa diproses. Di laptop Apple M4, command line mengonversi CSV 174 MB berisi satu juta baris dalam waktu kurang dari satu detik.