Przejdź do treści

Konwersja CSV do Oracle

Upuść plik CSV, aby dostać skrypt Oracle z instrukcjami CREATE TABLE i INSERT. Każda kolumna dostaje typ, a każda poprawka jest wymieniona z wierszem i kolumną.

Twój plik
csvventas_2024.csvPlik przykładowy, 357 B
Twoja baza danych

5 wierszy przekonwertowanych, 8 poprawek, brak odrzuconych

Pokaż
Pierwsze wiersze pliku ventas_2024.csv, z zaznaczoną każdą poprawką
Wiersz
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;

Poprawki

  1. Plik był zapisany w kodowaniu windows‑1252; przekonwertowano go na UTF-8.
  2. Nagłówek jest w wierszu 4; wiersze nad nim pominięto.
  3. Wiersz 10 ("TOTAL") to suma, więc go pominięto.
  4. Zachowano zera wiodące w "Folio": 00412 pozostaje 00412, zapisane jako tekst.
  5. 15/02/2024 dowodzi, że daty w "Fecha" zaczynają się od dnia, więc 03/02/2024 jest odczytywane jako 2024‑02‑03.
  6. Liczby w "Importe" mają przecinek dziesiętny: 1.234,50 jest odczytywane jako 1234.50.
  7. N/A w "Importe" odczytano jako puste (1 z 5 wartości).
  8. "Pagado" zawiera słowa tak i nie (sí, no), zapisane jako wartości logiczne.

Plik jest konwertowany na tym komputerze i nigdy nie jest wysyłany.

Inne przykłady:

Z CSV do Oracle, kolumna po kolumnie

Przykład powyżej, ventas_2024.csv, tak jak IntoSQL zapisuje go dla Oracle: co zawiera każda kolumna w pliku, jaki dostaje typ i jak jej pierwsza wartość trafia do skryptu.

W plikuPierwsza wartośćKolumnaTyp w OracleW skrypcie
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

Załaduj skrypt do Oracle

Pobierasz zwykły plik .sql. Uruchom go narzędziami Oracle.

Z terminala

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

Skrypt wyłącza zmienne podstawiania (SET DEFINE OFF), więc znak & w danych pozostaje znakiem &.

Z narzędzia bazodanowego

W SQL Developer otwórz skrypt i wybierz Run Script (F5).

Co warto wiedzieć o plikach CSV i Oracle

Co IntoSQL odczytuje w plikach CSV

  • Kodowanie jest wykrywane, także Windows-1252 i UTF-16, więc znaki diakrytyczne i ñ docierają bez zmian.
  • Separator jest wykrywany: przecinek, średnik, tabulator lub pionowa kreska. Przy średniku przecinki dziesiętne, takie jak 1.234,50, są odczytywane jako liczby.
  • Wartości w cudzysłowach mogą zawierać separatory i podziały wierszy.

Co warto wiedzieć o Oracle

  • Wartości tak i nie stają się NUMBER(1) z 1 lub 0, co akceptuje każda wersja Oracle.
  • Tekst to VARCHAR2 z długością w znakach; powyżej 4000 bajtów staje się CLOB. Oracle zapisuje pusty tekst jako NULL.
  • Wiersze są wstawiane za pomocą INSERT ALL, a długie wartości są dzielone, aby SQL*Plus je zaakceptował.

Jak każdy rodzaj wartości jest zapisywany w Oracle

WartośćOracle
Tak i nieNUMBER(1)
Liczby całkowiteNUMBER(10)
Duże liczby całkowiteNUMBER(19)
Liczby dziesiętneNUMBER(p,s)
Liczby zmiennoprzecinkoweBINARY_DOUBLE
DatyDATE
GodzinyINTERVAL DAY(0) TO SECOND
Daty z godzinąTIMESTAMP
Daty z godziną i przesunięciemTIMESTAMP WITH TIME ZONE
TekstVARCHAR2(n CHAR)CLOB

Pytania o CSV do Oracle

Nie ma tu odpowiedzi? Napisz do nas przez stronę kontaktu, a odpowie człowiek. Strona kontaktu

Jak przekonwertować CSV do Oracle?

Upuść plik na konwerter u góry tej strony. Znajduje nagłówek, odczytuje każdą wartość i zapisuje skrypt Oracle, wymieniając każdą poprawkę. Pobierz skrypt i uruchom go za pomocą SQL*Plus.

Co, jeśli mój CSV używa średników lub tabulatorów?

Separator jest wykrywany: przecinek, średnik, tabulator lub pionowa kreska. Możesz go też ustawić w Więcej opcji. Przy średniku przecinki dziesiętne, takie jak 1.234,50, są odczytywane jako liczby.

Jakich typów Oracle używa?

Wartości tak i nie stają się NUMBER(1), liczby całkowite NUMBER(10), liczby dziesiętne NUMBER(p,s), daty DATE, daty z godziną TIMESTAMP, a tekst VARCHAR2(n CHAR). Rozmiary wynikają z najdłuższej wartości w każdej kolumnie.

Czy zachowuje zera wiodące w Oracle?

Tak. Kod taki jak 00412 pozostaje tekstem, więc Oracle przechowuje go jako VARCHAR2(8 CHAR), a skrypt zapisuje go jako '00412'.

Czy może załadować dane do Oracle bez skryptu?

Nie. Pobierz skrypt i uruchom go za pomocą SQL*Plus. Ładowanie bez skryptu działa dla PostgreSQL, MySQL, MariaDB i SQLite, z aplikacji na komputer lub wiersza poleceń.

Jak duży może być plik CSV?

Przeglądarka odczytuje CSV strumieniowo, w miarę wczytywania, więc działają pliki o wielkości kilku gigabajtów. Na laptopie z Apple M4 wiersz poleceń konwertuje CSV 174 MB z milionem wierszy w mniej niż sekundę.