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ą.
5 wierszy przekonwertowanych, 8 poprawek, brak odrzuconych
| Wiersz | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- 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
- Plik był zapisany w kodowaniu windows‑1252; przekonwertowano go na UTF-8.
- Nagłówek jest w wierszu 4; wiersze nad nim pominięto.
- Wiersz 10 ("TOTAL") to suma, więc go pominięto.
- Zachowano zera wiodące w "Folio": 00412 pozostaje 00412, zapisane jako tekst.
- 15/02/2024 dowodzi, że daty w "Fecha" zaczynają się od dnia, więc 03/02/2024 jest odczytywane jako 2024‑02‑03.
- Liczby w "Importe" mają przecinek dziesiętny: 1.234,50 jest odczytywane jako 1234.50.
- N/A w "Importe" odczytano jako puste (1 z 5 wartości).
- "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 pliku | Pierwsza wartość | Kolumna | Typ w Oracle | W skrypcie |
|---|---|---|---|---|
| Folio | 00412 | folio | VARCHAR2(8 CHAR) | '00412' |
| Cliente | Peña Muñoz | cliente | VARCHAR2(16 CHAR) | 'Peña Muñoz' |
| Ciudad | Mérida | ciudad | VARCHAR2(16 CHAR) | 'Mérida' |
| Fecha | 15/02/2024 | fecha | DATE | DATE '2024-02-15' |
| Importe | 1.234,50 | importe | NUMBER(6,2) | 1234.50 |
| Pagado | sí | pagado | NUMBER(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.sqlSkrypt 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 nie | NUMBER(1) |
| Liczby całkowite | NUMBER(10) |
| Duże liczby całkowite | NUMBER(19) |
| Liczby dziesiętne | NUMBER(p,s) |
| Liczby zmiennoprzecinkowe | BINARY_DOUBLE |
| Daty | DATE |
| Godziny | INTERVAL DAY(0) TO SECOND |
| Daty z godziną | TIMESTAMP |
| Daty z godziną i przesunięciem | TIMESTAMP WITH TIME ZONE |
| Tekst | VARCHAR2(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ę.