Конвертация Excel в Oracle
Перетащите файл Excel, чтобы получить скрипт для Oracle с командами CREATE TABLE и INSERT. Каждый столбец получает тип, а каждое исправление указано со строкой и столбцом.
4 строки конвертированы, 10 исправлений, ни одна не отклонена
| Строка | ||||||
|---|---|---|---|---|---|---|
| 5 | 00127 | Peña Muñoz | 01234 | 03/02/2024 | sí | 1.234,50 |
| 6 | 00128 | José Ángel | 09870 | 15/02/2024 | no | N/A |
| 7 | 00129 | Zoë Ortíz | 44100 | 29/02/2024 | sí | -12,00 |
| 8 | 00130 | Ñuño Castañeda | 06700 | 11/03/2024 | no | 980,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;
Исправления
- Заголовок находится в строке 4; строки над ним не включены.
- Строка 9 ("TOTAL") содержит итог, поэтому она не включена.
- Столбец "Nº Cliente" теперь называется no_cliente, чтобы Oracle читал его без кавычек.
- Столбец "C.P." теперь называется c_p, чтобы Oracle читал его без кавычек.
- В "Nº Cliente" сохранены ведущие нули: 00127 остается 00127 и хранится как текст.
- В "C.P." сохранены ведущие нули: 01234 остается 01234 и хранится как текст.
- 15/02/2024 доказывает, что даты в "Alta" начинаются с дня, поэтому 03/02/2024 читается как 2024‑02‑03.
- "Activo" содержит слова да и нет (sí, no), они сохранены как логические значения.
- Числа в "Saldo" записаны с десятичной запятой: 1.234,50 читается как 1234.50.
- N/A в "Saldo" прочитаны как пустые (значений: 1 из 4).
Файл конвертируется на этом компьютере и никуда не загружается.
Другие примеры:
Из Excel в Oracle, столбец за столбцом
Пример выше, clientes_2024.xlsx, в том виде, в котором IntoSQL записывает его для Oracle: что хранит каждый столбец в файле, какой тип он получает и как его первое значение попадает в скрипт.
| В файле | Первое значение | Столбец | Тип в Oracle | В скрипте |
|---|---|---|---|---|
| Nº Cliente | 00127 | no_cliente | VARCHAR2(8 CHAR) | '00127' |
| Nombre | Peña Muñoz | nombre | VARCHAR2(16 CHAR) | 'Peña Muñoz' |
| C.P. | 01234 | c_p | VARCHAR2(8 CHAR) | '01234' |
| Alta | 03/02/2024 | alta | DATE | DATE '2024-02-03' |
| Activo | sí | activo | NUMBER(1) | 1 |
| Saldo | 1.234,50 | saldo | NUMBER(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 МБ с миллионом строк примерно за секунду.