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

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

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

Ваш файл
xlsxclientes_2024.xlsxПример файла, 7 кБ
Ваша база данных

4 строки конвертированы, 10 исправлений, ни одна не отклонена

Показать
Первые строки clientes_2024.xlsx, каждое исправление отмечено
Строка
500127Peña Muñoz0123403/02/2024sí1.234,50
600128José Ángel0987015/02/2024noN/A
700129Zoë Ortíz4410029/02/2024sí-12,00
800130Ñuño Castañeda0670011/03/2024no980,75
-- Written by IntoSQL for Oracle.

SET DEFINE OFF

CREATE TABLE clientes_2024 (
    no_cliente VARCHAR2(8 CHAR) NOT NULL,
    nombre VARCHAR2(16 CHAR) NOT NULL,
    c_p VARCHAR2(8 CHAR) NOT NULL,
    alta DATE NOT NULL,
    activo NUMBER(1) NOT NULL,
    saldo NUMBER(6,2)
);
COMMENT ON COLUMN clientes_2024.no_cliente IS 'Nº Cliente';
COMMENT ON COLUMN clientes_2024.c_p IS 'C.P.';

INSERT ALL
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00127', 'Peña Muñoz', '01234', DATE '2024-02-03', 1, 1234.50)
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00128', 'José Ángel', '09870', DATE '2024-02-15', 0, NULL)
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00129', 'Zoë Ortíz', '44100', DATE '2024-02-29', 1, -12.00)
    INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES ('00130', 'Ñuño Castañeda', '06700', DATE '2024-03-11', 0, 980.75)
SELECT 1 FROM DUAL;

COMMIT;

Исправления

  1. Заголовок находится в строке 4; строки над ним не включены.
  2. Строка 9 ("TOTAL") содержит итог, поэтому она не включена.
  3. Столбец "Nº Cliente" теперь называется no_cliente, чтобы Oracle читал его без кавычек.
  4. Столбец "C.P." теперь называется c_p, чтобы Oracle читал его без кавычек.
  5. В "Nº Cliente" сохранены ведущие нули: 00127 остается 00127 и хранится как текст.
  6. В "C.P." сохранены ведущие нули: 01234 остается 01234 и хранится как текст.
  7. 15/02/2024 доказывает, что даты в "Alta" начинаются с дня, поэтому 03/02/2024 читается как 2024‑02‑03.
  8. "Activo" содержит слова да и нет (sí, no), они сохранены как логические значения.
  9. Числа в "Saldo" записаны с десятичной запятой: 1.234,50 читается как 1234.50.
  10. N/A в "Saldo" прочитаны как пустые (значений: 1 из 4).

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

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

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

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

В файлеПервое значениеСтолбецТип в OracleВ скрипте
Nº Cliente00127no_clienteVARCHAR2(8 CHAR)'00127'
NombrePeña MuñoznombreVARCHAR2(16 CHAR)'Peña Muñoz'
C.P.01234c_pVARCHAR2(8 CHAR)'01234'
Alta03/02/2024altaDATEDATE '2024-02-03'
ActivosíactivoNUMBER(1)1
Saldo1.234,50saldoNUMBER(6,2)1234.50

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

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

Из терминала

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

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

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

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

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

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

  • Строка заголовков находится, даже если над ней есть названия или заметки, а строка итогов в конце не попадает в результат.
  • Даты, сохраненные как порядковые номера Excel, становятся настоящими датами, и в системе дат 1900, и в системе 1904.
  • Коды с ведущими нулями, например 00127, остаются текстом. Если в книге несколько листов, вы выбираете лист.

Что нужно знать о 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

Вопросы о Excel в Oracle

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

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

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

Какой лист книги конвертируется?

Первый видимый лист. Если в книге их несколько, появляется параметр Лист, где можно выбрать другой.

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

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

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

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

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

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

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

В браузере книга читается целиком, поэтому предел - это память, которую браузер выделяет этой странице. Приложение для компьютера и командная строка принимают книги любого размера; на ноутбуке с Apple M4 командная строка конвертирует книгу 117 МБ с миллионом строк примерно за секунду.