Конвертация Excel в MySQL
Перетащите файл Excel, чтобы получить скрипт для MySQL с командами 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 MySQL.
SET NAMES utf8mb4;
SET SESSION sql_mode = REPLACE(@@sql_mode, 'NO_BACKSLASH_ESCAPES', '');
START TRANSACTION;
CREATE TABLE clientes_2024 (
no_cliente varchar(8) NOT NULL COMMENT 'Nº Cliente',
nombre varchar(16) NOT NULL,
c_p varchar(8) NOT NULL COMMENT 'C.P.',
alta date NOT NULL,
activo tinyint(1) NOT NULL,
saldo decimal(6,2)
) DEFAULT CHARSET=utf8mb4;
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, чтобы MySQL читал его без кавычек.
- Столбец "C.P." теперь называется c_p, чтобы MySQL читал его без кавычек.
- В "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 в MySQL, столбец за столбцом
Пример выше, clientes_2024.xlsx, в том виде, в котором IntoSQL записывает его для MySQL: что хранит каждый столбец в файле, какой тип он получает и как его первое значение попадает в скрипт.
| В файле | Первое значение | Столбец | Тип в MySQL | В скрипте |
|---|---|---|---|---|
| Nº Cliente | 00127 | no_cliente | varchar(8) | '00127' |
| Nombre | Peña Muñoz | nombre | varchar(16) | 'Peña Muñoz' |
| C.P. | 01234 | c_p | varchar(8) | '01234' |
| Alta | 03/02/2024 | alta | date | '2024-02-03' |
| Activo | sí | activo | tinyint(1) | TRUE |
| Saldo | 1.234,50 | saldo | decimal(6,2) | 1234.50 |
Загрузите скрипт в MySQL
Вы скачиваете обычный файл .sql. Запустите его штатными средствами MySQL.
Из терминала
mysql --default-character-set=utf8mb4 mydb < clientes_2024.mysql.sqlСкрипт сам задает utf8mb4; флаг заставляет клиент передавать данные так же, поэтому кириллица и другие символы доходят без искажений.
Из клиента базы данных
В MySQL Workbench выберите File, Run SQL Script и укажите файл.
Без скриптаPro
IntoSQL Pro загружает файл прямо в MySQL из приложения для компьютера или командной строки, без написания скрипта.
intosql load clientes_2024.xlsx --into mysql://user@localhost/mydbЧто нужно знать о файлах Excel и MySQL
Что IntoSQL читает в файлах Excel
- Строка заголовков находится, даже если над ней есть названия или заметки, а строка итогов в конце не попадает в результат.
- Даты, сохраненные как порядковые номера Excel, становятся настоящими датами, и в системе дат 1900, и в системе 1904.
- Коды с ведущими нулями, например 00127, остаются текстом. Если в книге несколько листов, вы выбираете лист.
Что нужно знать о MySQL
- Значения да и нет становятся tinyint(1). Текст до 255 символов хранится как varchar; более длинный текст как text, mediumtext или longtext в зависимости от размера.
- Скрипт использует utf8mb4 и задает режим SQL, поэтому диакритика, эмодзи, обратные слеши и переносы строк загружаются так, как написаны.
- Тип datetime в MySQL не хранит часовой пояс.
Как каждый вид значений хранится в MySQL
| Значение | MySQL |
|---|---|
| Да и нет | tinyint(1) |
| Целые числа | int |
| Большие целые числа | bigint |
| Десятичные числа | decimal(p,s)double |
| Числа с плавающей точкой | double |
| Даты | date |
| Время суток | time(6)time |
| Даты со временем | datetime(6)datetime |
| Даты со временем и смещением | datetime(6)datetime |
| Текст | varchar(n)textmediumtextlongtext |
Вопросы о Excel в MySQL
Нет ответа на ваш вопрос? Напишите нам через страницу контактов, и вам ответит человек. Страница контактов
Как конвертировать Excel в MySQL?
Перетащите файл в конвертер в верхней части этой страницы. Он находит заголовок, читает каждое значение и записывает скрипт для MySQL, перечисляя каждое исправление. Скачайте скрипт и запустите его через the mysql client.
Какой лист книги конвертируется?
Первый видимый лист. Если в книге их несколько, появляется параметр Лист, где можно выбрать другой.
Какие типы MySQL используются?
Значения да и нет становятся tinyint(1), целые числа int, дробные decimal(p,s), даты date, даты со временем datetime(6), а текст varchar(n). Размеры берутся по самому длинному значению в каждом столбце.
Сохраняются ли ведущие нули в MySQL?
Да. Код вроде 00127 остается текстом, поэтому MySQL хранит его как varchar(8), а скрипт записывает как '00127'.
Можно ли загрузить данные в MySQL без скрипта?
Да, с IntoSQL Pro. Приложение для компьютера и командная строка подключаются к MySQL и загружают строки напрямую, сначала создав таблицу.
Насколько большим может быть файл Excel?
В браузере книга читается целиком, поэтому предел - это память, которую браузер выделяет этой странице. Приложение для компьютера и командная строка принимают книги любого размера; на ноутбуке с Apple M4 командная строка конвертирует книгу 117 МБ с миллионом строк примерно за секунду.