Конвертация Excel в SQL
Перетащите файл Excel и выберите базу данных, чтобы получить скрипт SQL с командами 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 PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE clientes_2024 (
no_cliente text NOT NULL,
nombre text NOT NULL,
c_p text NOT NULL,
alta date NOT NULL,
activo boolean NOT NULL,
saldo numeric(6,2)
);
COMMENT ON COLUMN clientes_2024.no_cliente IS 'Nº Cliente';
COMMENT ON COLUMN clientes_2024.c_p IS 'C.P.';
INSERT INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES
('00127', 'Peña Muñoz', '01234', '2024-02-03', TRUE, 1234.50),
('00128', 'José Ángel', '09870', '2024-02-15', FALSE, NULL),
('00129', 'Zoë Ortíz', '44100', '2024-02-29', TRUE, -12.00),
('00130', 'Ñuño Castañeda', '06700', '2024-03-11', FALSE, 980.75);
COMMIT;
Исправления
- Заголовок находится в строке 4; строки над ним не включены.
- Строка 9 ("TOTAL") содержит итог, поэтому она не включена.
- Столбец "Nº Cliente" теперь называется no_cliente, чтобы PostgreSQL читал его без кавычек.
- Столбец "C.P." теперь называется c_p, чтобы PostgreSQL читал его без кавычек.
- В "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, шесть баз данных
Пример выше, clientes_2024.xlsx, и тип, который каждый его столбец получает в каждой базе данных.
| В файле | Первое значение | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|---|
| Nº Cliente | 00127 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| Nombre | Peña Muñoz | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| C.P. | 01234 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| Alta | 03/02/2024 | date | date | date | DATE | date | DATE |
| Activo | sí | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Saldo | 1.234,50 | numeric(6,2) | decimal(6,2) | decimal(6,2) | NUMERIC(6,2) | decimal(6,2) | NUMBER(6,2) |
Загрузите скрипт в свою базу данных
Вы скачиваете обычный файл .sql. Каждая база данных запускает его своими средствами.
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f clientes_2024.postgresql.sqlON_ERROR_STOP останавливает psql на первой ошибке. Скрипт выполняется в одной транзакции, поэтому неудачная загрузка оставляет базу без изменений.
MySQL
mysql --default-character-set=utf8mb4 mydb < clientes_2024.mysql.sqlСкрипт сам задает utf8mb4; флаг заставляет клиент передавать данные так же, поэтому кириллица и другие символы доходят без искажений.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < clientes_2024.mariadb.sqlСкрипт сам задает utf8mb4; флаг заставляет клиент передавать данные так же, поэтому кириллица и другие символы доходят без искажений.
SQLite
sqlite3 clientes_2024.db < clientes_2024.sqlite.sqlФайл базы данных создается, если его нет. Конвертер также скачивает готовую базу .sqlite, вообще без команд.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i clientes_2024.sql_server.sql-f 65001 читает файл как UTF-8, поэтому кириллица и ñ доходят в том виде, в котором записаны.
Oracle
sqlplus user@//localhost/mydb @clientes_2024.oracle.sqlСкрипт отключает переменные подстановки (SET DEFINE OFF), поэтому амперсанд в ваших данных остается амперсандом.
Командная строка бесплатно загружает файлы прямо в базу SQLite. С IntoSQL Pro она и приложение для компьютера загружают также в PostgreSQL, MySQL и MariaDB. Для SQL Server и Oracle запустите скрипт.
Что нужно знать о файлах Excel и каждой базе данных
Что IntoSQL читает в файлах Excel
- Строка заголовков находится, даже если над ней есть названия или заметки, а строка итогов в конце не попадает в результат.
- Даты, сохраненные как порядковые номера Excel, становятся настоящими датами, и в системе дат 1900, и в системе 1904.
- Коды с ведущими нулями, например 00127, остаются текстом. Если в книге несколько листов, вы выбираете лист.
Что нужно знать о каждой базе данных
- Выберите базу данных после открытия файла: каждая получает типы, которые поддерживает.
Как каждый вид значений хранится в каждой базе данных
| Значение | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Да и нет | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Целые числа | integer | int | int | INTEGER | int | NUMBER(10) |
| Большие целые числа | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Десятичные числа | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Числа с плавающей точкой | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Даты | date | date | date | DATE | date | DATE |
| Время суток | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Даты со временем | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Даты со временем и смещением | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| Текст | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
Вопросы о Excel в SQL
Нет ответа на ваш вопрос? Напишите нам через страницу контактов, и вам ответит человек. Страница контактов
Как конвертировать Excel в SQL?
Перетащите файл в конвертер в верхней части этой страницы и выберите базу данных: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server или Oracle. Каждая получает типы, которые поддерживает. Скачайте скрипт и запустите его в своей базе.
Какой лист книги конвертируется?
Первый видимый лист. Если в книге их несколько, появляется параметр Лист, где можно выбрать другой.
Какие типы используются в каждой базе данных?
У каждой базы свои: значения да и нет - это boolean в PostgreSQL, tinyint(1) в MySQL и MariaDB, bit в SQL Server и NUMBER(1) в Oracle. Таблица на этой странице перечисляет каждый вид значений.
Сохраняются ли ведущие нули?
Да. Код вроде 00127 остается текстом в любой базе данных и записывается как '00127', поэтому ни один ноль не теряется.
Можно ли загрузить данные без скрипта?
Да. Командная строка бесплатно загружает в SQLite, а с IntoSQL Pro приложение для компьютера и командная строка загружают в PostgreSQL, MySQL и MariaDB. Для SQL Server и Oracle запустите скрипт.
Насколько большим может быть файл Excel?
В браузере книга читается целиком, поэтому предел - это память, которую браузер выделяет этой странице. Приложение для компьютера и командная строка принимают книги любого размера; на ноутбуке с Apple M4 командная строка конвертирует книгу 117 МБ с миллионом строк примерно за секунду.