İçeriğe geç

CSV dosyalarını PostgreSQL için dönüştürün

CSV dosyanızı bırakın, CREATE TABLE ve INSERT ifadeleri içeren bir PostgreSQL betiği alın. Her sütuna bir tür verilir ve her düzeltme satırı ve sütunuyla listelenir.

Dosyanız
csvventas_2024.csvÖrnek dosya, 357 bayt
Veritabanınız

5 satır dönüştürüldü, 8 düzeltme, reddedilen yok

Göster
ventas_2024.csv dosyasının ilk satırları, her düzeltme işaretli
Satır
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;

Düzeltmeler

  1. Dosya windows‑1252 ile kodlanmıştı; UTF-8'e dönüştürüldü.
  2. Başlık 4. satırda; üstündeki satırlar dışarıda bırakıldı.
  3. 10. satır ("TOTAL") bir toplam; bu yüzden dışarıda bırakıldı.
  4. "Folio" içindeki baştaki sıfırlar korundu: 00412, 00412 olarak kalır ve metin olarak saklanır.
  5. 15/02/2024 değeri, "Fecha" içindeki tarihlerde günün önce geldiğini kanıtlıyor; bu yüzden 03/02/2024, 2024‑02‑03 olarak okunur.
  6. "Importe" içindeki sayılar ondalık virgül kullanıyor: 1.234,50, 1234.50 olarak okunur.
  7. "Importe" içindeki N/A boş olarak okundu (5 değerden 1).
  8. "Pagado" evet ve hayır sözcükleri içeriyor (sí, no); boolean olarak saklandı.

Dosyan bu bilgisayarda dönüştürülür ve asla yüklenmez.

Diğer örnekler:

CSV dosyasından PostgreSQL için, sütun sütun

Yukarıdaki örnek ventas_2024.csv, IntoSQL'in PostgreSQL için yazdığı haliyle: her sütunun dosyada ne tuttuğu, aldığı tür ve ilk değerinin betiğe nasıl yazıldığı.

Dosyadaİlk değerSütunPostgreSQL türüBetikte
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

Betiği PostgreSQL veritabanına yükleyin

İndirilen dosya düz bir .sql dosyasıdır. PostgreSQL araçlarıyla çalıştırın.

Terminalden

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

ON_ERROR_STOP, psql'in ilk hatada durmasını sağlar. Betik tek bir işlemde çalışır, bu yüzden başarısız bir yükleme veritabanını olduğu gibi bırakır.

Bir veritabanı aracından

pgAdmin veya DBeaver'da betiği bir sorgu penceresinde açıp çalıştırın.

Betik olmadanPro

IntoSQL Pro, dosyayı masaüstü uygulamasından veya komut satırından doğrudan PostgreSQL veritabanına yükler; betik yazmanız gerekmez.

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

CSV dosyaları ve PostgreSQL hakkında bilmeniz gerekenler

IntoSQL'in CSV dosyalarında okudukları

  • Kodlama algılanır, Windows-1252 ve UTF-16 dahil; böylece aksanlı harfler ve ñ bozulmadan gelir.
  • Ayırıcı algılanır: virgül, noktalı virgül, sekme veya dikey çizgi. Noktalı virgülle, 1.234,50 gibi ondalık virgüller sayı olarak okunur.
  • Tırnak içindeki değerler ayırıcı ve satır sonu içerebilir.

PostgreSQL hakkında bilmeniz gerekenler

  • Ondalık sayılar numeric(p,s) olarak basamaklarını aynen korur, saat farkı olan tarihler ise timestamptz olur.
  • PostgreSQL metni NUL karakterini tutamaz, bu yüzden bu karakter onu içeren değerlerden çıkarılır.
  • Betik tek bir işlemde çalışır, böylece başarısız bir yükleme yarım iş bırakmaz.

Her değer türü PostgreSQL içinde nasıl saklanır

DeğerPostgreSQL
Evet ve hayırboolean
Tam sayılarinteger
Büyük tam sayılarbigint
Ondalık sayılarnumeric(p,s)
Kayan noktalı sayılardouble precision
Tarihlerdate
Günün saatleritime
Saatli tarihlertimestamp
Saatli ve saat farkı olan tarihlertimestamptz
Metintext

CSV dosyasından PostgreSQL için sorular

Yanıtınızı bulamadınız mı? İletişim sayfasından bize yazın, bir kişi yanıt verir. İletişim sayfası

CSV dosyasını PostgreSQL için nasıl dönüştürürüm?

Dosyanızı bu sayfanın üstündeki dönüştürücüye bırakın. Başlığı bulur, her değeri okur ve yaptığı her düzeltmeyi listeleyerek PostgreSQL betiğini yazar. Betiği indirip psql ile çalıştırın.

CSV dosyam noktalı virgül veya sekme kullanıyorsa?

Ayırıcı algılanır: virgül, noktalı virgül, sekme veya dikey çizgi. Daha fazla seçenek altından da ayarlayabilirsiniz. Noktalı virgülle, 1.234,50 gibi ondalık virgüller sayı olarak okunur.

Hangi PostgreSQL türlerini kullanır?

Evet/hayır değerleri boolean, tam sayılar integer, ondalıklar numeric(p,s), tarihler date, saatli tarihler timestamp ve metin text olur. Boyutlar her sütundaki en uzun değere göre belirlenir.

PostgreSQL için baştaki sıfırları korur mu?

Evet. 00412 gibi bir kod metin olarak kalır; PostgreSQL onu text olarak saklar ve betik onu '00412' olarak yazar.

Verileri betik olmadan PostgreSQL veritabanına yükleyebilir mi?

Evet, IntoSQL Pro ile. Masaüstü uygulaması ve komut satırı PostgreSQL veritabanına bağlanır, önce tabloyu oluşturur ve satırları doğrudan yükler.

CSV dosyası ne kadar büyük olabilir?

Tarayıcı CSV dosyasını akış halinde okur, bu yüzden birkaç gigabaytlık dosyalar çalışır. Apple M4'lü bir dizüstü bilgisayarda komut satırı bir milyon satırlık 174 MB'lık bir CSV dosyasını bir saniyeden kısa sürede dönüştürür.