Zum Inhalt springen

CSV in Oracle umwandeln

Leg deine CSV-Datei ab und erhalte ein Oracle-Skript mit CREATE TABLE- und INSERT-Anweisungen. Jede Spalte bekommt einen Typ, und jede Korrektur wird mit Zeile und Spalte aufgeführt.

Deine Datei
csvventas_2024.csvBeispieldatei, 357 B
Deine Datenbank

5 Zeilen konvertiert, 8 Korrekturen, keine abgelehnt

Anzeigen
Die ersten Zeilen von ventas_2024.csv, jede Korrektur markiert
Zeile
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;

Korrekturen

  1. Die Datei war in windows‑1252 kodiert; sie wurde in UTF-8 umgewandelt.
  2. Die Kopfzeile ist in Zeile 4; die Zeilen darüber wurden ausgelassen.
  3. Zeile 10 ("TOTAL") ist eine Summe und wurde deshalb ausgelassen.
  4. Führende Nullen in "Folio" behalten: 00412 bleibt 00412, gespeichert als Text.
  5. 15/02/2024 belegt, dass die Datumsangaben in "Fecha" mit dem Tag beginnen, also wird 03/02/2024 als 2024‑02‑03 gelesen.
  6. Zahlen in "Importe" nutzen ein Dezimalkomma: 1.234,50 wird als 1234.50 gelesen.
  7. N/A in "Importe" als leer gelesen (1 von 5 Werten).
  8. "Pagado" enthält Ja- und Nein-Wörter (sí, no), gespeichert als Boolean.

Deine Datei wird auf diesem Computer umgewandelt und nie hochgeladen.

Weitere Beispiele:

Von CSV zu Oracle, Spalte für Spalte

Das Beispiel oben, ventas_2024.csv, so wie IntoSQL es für Oracle schreibt: was jede Spalte in der Datei enthält, welchen Typ sie bekommt und wie ihr erster Wert im Skript landet.

In der DateiErster WertSpalteTyp in OracleIm Skript
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

Das Skript in Oracle laden

Der Download ist eine einfache .sql-Datei. Führe sie mit den Werkzeugen von Oracle aus.

Aus einem Terminal

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

Das Skript schaltet Substitutionsvariablen aus (SET DEFINE OFF), damit ein kaufmännisches Und in deinen Daten erhalten bleibt.

Aus einem Datenbank-Tool

Öffne das Skript in SQL Developer und wähle Run Script (F5).

Was du über CSV-Dateien und Oracle wissen solltest

Was IntoSQL in CSV-Dateien liest

  • Die Kodierung wird erkannt, auch Windows-1252 und UTF-16, sodass Akzente und ñ unverändert ankommen.
  • Das Trennzeichen wird erkannt: Komma, Semikolon, Tabulator oder senkrechter Strich. Bei Semikolon werden Dezimalkommas wie 1.234,50 als Zahlen gelesen.
  • Werte in Anführungszeichen können Trennzeichen und Zeilenumbrüche enthalten.

Was du über Oracle wissen solltest

  • Ja-und-nein-Werte werden zu NUMBER(1) mit 1 oder 0, was jede Oracle-Version akzeptiert.
  • Text ist VARCHAR2 mit einer Länge in Zeichen; über 4000 Bytes wird er zu CLOB. Oracle speichert leeren Text als NULL.
  • Zeilen werden mit INSERT ALL eingefügt, und lange Werte werden aufgeteilt, damit SQL*Plus sie akzeptiert.

Wie jede Art von Wert in Oracle gespeichert wird

WertOracle
Ja und neinNUMBER(1)
Ganze ZahlenNUMBER(10)
Große ganze ZahlenNUMBER(19)
DezimalzahlenNUMBER(p,s)
GleitkommazahlenBINARY_DOUBLE
DatumswerteDATE
UhrzeitenINTERVAL DAY(0) TO SECOND
Datum mit UhrzeitTIMESTAMP
Datum mit Uhrzeit und ZeitversatzTIMESTAMP WITH TIME ZONE
TextVARCHAR2(n CHAR)CLOB

Fragen zu CSV zu Oracle

Keine Antwort gefunden? Schreib uns über die Kontaktseite, und ein Mensch antwortet. Kontaktseite

Wie konvertiere ich CSV zu Oracle?

Leg deine Datei auf den Konverter oben auf dieser Seite. Er findet die Kopfzeile, liest jeden Wert und schreibt das Oracle-Skript, mit jeder Korrektur aufgelistet. Lade das Skript herunter und führe es mit SQL*Plus aus.

Was, wenn meine CSV Semikolons oder Tabs verwendet?

Das Trennzeichen wird erkannt: Komma, Semikolon, Tab oder senkrechter Strich. Du kannst es auch unter Weitere Optionen festlegen. Mit Semikolon werden Dezimalkommas wie 1.234,50 als Zahlen gelesen.

Welche Oracle-Typen werden verwendet?

Ja/Nein-Werte werden NUMBER(1), ganze Zahlen NUMBER(10), Dezimalzahlen NUMBER(p,s), Datumsangaben DATE, Datumsangaben mit Uhrzeit TIMESTAMP und Text VARCHAR2(n CHAR). Die Größen richten sich nach dem längsten Wert jeder Spalte.

Bleiben führende Nullen in Oracle erhalten?

Ja. Ein Code wie 00412 bleibt Text, also speichert Oracle ihn als VARCHAR2(8 CHAR), und das Skript schreibt ihn als '00412'.

Kann es die Daten ohne Skript in Oracle laden?

Nein. Lade das Skript herunter und führe es mit SQL*Plus aus. Laden ohne Skript funktioniert für PostgreSQL, MySQL, MariaDB und SQLite, aus der Desktop-App oder der Kommandozeile.

Wie groß darf die CSV-Datei sein?

Der Browser liest eine CSV beim Einströmen, daher funktionieren Dateien von mehreren Gigabyte. Auf einem Apple-M4-Laptop konvertiert die Kommandozeile eine 174-MB-CSV mit einer Million Zeilen in unter einer Sekunde.