İçeriğe geç

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

CSV dosyanızı bırakın, CREATE TABLE ve INSERT ifadeleri içeren bir Oracle 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 Oracle.

SET DEFINE OFF

CREATE TABLE ventas_2024 (
    folio VARCHAR2(8 CHAR) NOT NULL,
    cliente VARCHAR2(16 CHAR) NOT NULL,
    ciudad VARCHAR2(16 CHAR) NOT NULL,
    fecha DATE NOT NULL,
    importe NUMBER(6,2),
    pagado NUMBER(1) NOT NULL
);

INSERT ALL
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00412', 'Peña Muñoz', 'Mérida', DATE '2024-02-15', 1234.50, 1)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00413', 'José Ángel Ruiz', 'León', DATE '2024-02-03', 99.90, 0)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00414', 'Zoë Ortíz', 'Querétaro', DATE '2024-02-29', NULL, 1)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00415', 'Ñuño Castañeda', 'Oaxaca', DATE '2024-02-28', 7.25, 0)
    INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES ('00416', 'Iñaki Olaizola', 'Mazatlán', DATE '2024-03-11', 980.75, 1)
SELECT 1 FROM DUAL;

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 Oracle için, sütun sütun

Yukarıdaki örnek ventas_2024.csv, IntoSQL'in Oracle 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ütunOracle türüBetikte
Folio00412folioVARCHAR2(8 CHAR)'00412'
ClientePeña MuñozclienteVARCHAR2(16 CHAR)'Peña Muñoz'
CiudadMéridaciudadVARCHAR2(16 CHAR)'Mérida'
Fecha15/02/2024fechaDATEDATE '2024-02-15'
Importe1.234,50importeNUMBER(6,2)1234.50
PagadosípagadoNUMBER(1)1

Betiği Oracle veritabanına yükleyin

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

Terminalden

sqlplus user@//localhost/mydb @ventas_2024.oracle.sql

Betik yerine koyma değişkenlerini kapatır (SET DEFINE OFF), böylece verinizdeki & işareti olduğu gibi kalır.

Bir veritabanı aracından

SQL Developer'da betiği açıp Run Script'i (F5) seçin.

CSV dosyaları ve Oracle 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.

Oracle hakkında bilmeniz gerekenler

  • Evet ve hayır değerleri, 1 veya 0 tutan NUMBER(1) olur; bunu her Oracle sürümü kabul eder.
  • Metin, uzunluğu karakter cinsinden olan VARCHAR2 olur; 4000 baytı aşınca CLOB olur. Oracle boş metni NULL olarak saklar.
  • Satırlar INSERT ALL ile eklenir ve uzun değerler SQL*Plus kabul etsin diye bölünür.

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

DeğerOracle
Evet ve hayırNUMBER(1)
Tam sayılarNUMBER(10)
Büyük tam sayılarNUMBER(19)
Ondalık sayılarNUMBER(p,s)
Kayan noktalı sayılarBINARY_DOUBLE
TarihlerDATE
Günün saatleriINTERVAL DAY(0) TO SECOND
Saatli tarihlerTIMESTAMP
Saatli ve saat farkı olan tarihlerTIMESTAMP WITH TIME ZONE
MetinVARCHAR2(n CHAR)CLOB

CSV dosyasından Oracle 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ı Oracle 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 Oracle betiğini yazar. Betiği indirip SQL*Plus 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 Oracle türlerini kullanır?

Evet/hayır değerleri NUMBER(1), tam sayılar NUMBER(10), ondalıklar NUMBER(p,s), tarihler DATE, saatli tarihler TIMESTAMP ve metin VARCHAR2(n CHAR) olur. Boyutlar her sütundaki en uzun değere göre belirlenir.

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

Evet. 00412 gibi bir kod metin olarak kalır; Oracle onu VARCHAR2(8 CHAR) olarak saklar ve betik onu '00412' olarak yazar.

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

Hayır. Betiği indirip SQL*Plus ile çalıştırın. Betiksiz yükleme masaüstü uygulamasından veya komut satırından PostgreSQL, MySQL, MariaDB ve SQLite için çalışır.

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.