Перейти к содержимому

Конвертация CSV в Oracle

Перетащите файл CSV, чтобы получить скрипт для Oracle с командами CREATE TABLE и INSERT. Каждый столбец получает тип, а каждое исправление указано со строкой и столбцом.

Ваш файл
csvventas_2024.csvПример файла, 357 Б
Ваша база данных

5 строк конвертировано, 8 исправлений, ни одна не отклонена

Показать
Первые строки ventas_2024.csv, каждое исправление отмечено
Строка
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;

Исправления

  1. Файл был в кодировке windows‑1252; он преобразован в UTF-8.
  2. Заголовок находится в строке 4; строки над ним не включены.
  3. Строка 10 ("TOTAL") содержит итог, поэтому она не включена.
  4. В "Folio" сохранены ведущие нули: 00412 остается 00412 и хранится как текст.
  5. 15/02/2024 доказывает, что даты в "Fecha" начинаются с дня, поэтому 03/02/2024 читается как 2024‑02‑03.
  6. Числа в "Importe" записаны с десятичной запятой: 1.234,50 читается как 1234.50.
  7. N/A в "Importe" прочитаны как пустые (значений: 1 из 5).
  8. "Pagado" содержит слова да и нет (sí, no), они сохранены как логические значения.

Файл конвертируется на этом компьютере и никуда не загружается.

Другие примеры:

Из CSV в Oracle, столбец за столбцом

Пример выше, ventas_2024.csv, в том виде, в котором IntoSQL записывает его для Oracle: что хранит каждый столбец в файле, какой тип он получает и как его первое значение попадает в скрипт.

В файлеПервое значениеСтолбецТип в OracleВ скрипте
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

Загрузите скрипт в Oracle

Вы скачиваете обычный файл .sql. Запустите его штатными средствами Oracle.

Из терминала

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

Скрипт отключает переменные подстановки (SET DEFINE OFF), поэтому амперсанд в ваших данных остается амперсандом.

Из клиента базы данных

В SQL Developer откройте скрипт и выберите Run Script (F5).

Что нужно знать о файлах CSV и Oracle

Что IntoSQL читает в файлах CSV

  • Кодировка определяется автоматически, включая Windows-1252 и UTF-16, поэтому буквы с диакритикой и ñ приходят без искажений.
  • Разделитель определяется автоматически: запятая, точка с запятой, табуляция или вертикальная черта. При точке с запятой десятичные запятые, как в 1.234,50, читаются как числа.
  • Значения в кавычках могут содержать разделители и переносы строк.

Что нужно знать о Oracle

  • Значения да и нет становятся NUMBER(1) со значением 1 или 0, что принимает любая версия Oracle.
  • Текст хранится как VARCHAR2 с длиной в символах; свыше 4000 байт он становится CLOB. Oracle хранит пустой текст как NULL.
  • Строки вставляются через INSERT ALL, а длинные значения разбиваются, чтобы SQL*Plus их принял.

Как каждый вид значений хранится в Oracle

ЗначениеOracle
Да и нетNUMBER(1)
Целые числаNUMBER(10)
Большие целые числаNUMBER(19)
Десятичные числаNUMBER(p,s)
Числа с плавающей точкойBINARY_DOUBLE
ДатыDATE
Время сутокINTERVAL DAY(0) TO SECOND
Даты со временемTIMESTAMP
Даты со временем и смещениемTIMESTAMP WITH TIME ZONE
ТекстVARCHAR2(n CHAR)CLOB

Вопросы о CSV в Oracle

Нет ответа на ваш вопрос? Напишите нам через страницу контактов, и вам ответит человек. Страница контактов

Как конвертировать CSV в Oracle?

Перетащите файл в конвертер в верхней части этой страницы. Он находит заголовок, читает каждое значение и записывает скрипт для Oracle, перечисляя каждое исправление. Скачайте скрипт и запустите его через SQL*Plus.

Что, если в моем CSV точки с запятой или табуляции?

Разделитель определяется автоматически: запятая, точка с запятой, табуляция или вертикальная черта. Его также можно задать в разделе Другие параметры. При точке с запятой десятичные запятые вроде 1.234,50 читаются как числа.

Какие типы Oracle используются?

Значения да и нет становятся NUMBER(1), целые числа NUMBER(10), дробные NUMBER(p,s), даты DATE, даты со временем TIMESTAMP, а текст VARCHAR2(n CHAR). Размеры берутся по самому длинному значению в каждом столбце.

Сохраняются ли ведущие нули в Oracle?

Да. Код вроде 00412 остается текстом, поэтому Oracle хранит его как VARCHAR2(8 CHAR), а скрипт записывает как '00412'.

Можно ли загрузить данные в Oracle без скрипта?

Нет. Скачайте скрипт и запустите его через SQL*Plus. Загрузка без скрипта работает для PostgreSQL, MySQL, MariaDB и SQLite из приложения для компьютера или командной строки.

Насколько большим может быть файл CSV?

Браузер читает CSV потоково, по мере загрузки, поэтому работают файлы в несколько гигабайт. На ноутбуке с Apple M4 командная строка конвертирует CSV 174 МБ с миллионом строк меньше чем за секунду.