ToolActToolAct

Конвертер Excel в SQL

Загрузите файл Excel для преобразования в SQL-запросы INSERT

Перетащите файл Excel сюда или нажмите для выбора

Что такое Excel в SQL?

Excel в SQL — это онлайн-инструмент преобразования форматов данных, который конвертирует файлы Excel (.xlsx/.xls) в SQL-запросы INSERT для удобного импорта в базы данных.

Excel — это наиболее широко используемый формат электронных таблиц, применяемый для хранения и анализа данных. SQL — это стандартный язык запросов для реляционных баз данных, а запросы INSERT используются для вставки данных в таблицы базы данных.

С помощью этого инструмента вы можете быстро преобразовать данные электронных таблиц Excel в исполняемые SQL-запросы с поддержкой выбора нескольких листов, пользовательских имён таблиц и стилей кавычек для удобной миграции и импорта данных.

Как использовать

Как использовать

  1. Загрузите файл Excel (формат .xlsx или .xls)
  2. Если в файле несколько листов, выберите нужный для конвертации
  3. Задайте имя таблицы (по умолчанию table_name)
  4. Выберите, использовать ли первую строку в качестве названий полей
  5. SQL-выражения INSERT генерируются автоматически, копируются одним нажатием

Проверка генерации SQL

  • Проверьте названия столбцов, типы данных, кавычки и обработку NULL перед запуском сгенерированного SQL на реальной базе данных.
  • Для импорта в рабочую среду сначала протестируйте на временной таблице и сохраните резервную копию исходной таблицы.

Применение

Генерация SQL из выбранного листа рабочей книгиЗагрузите файл Excel, выберите лист, задайте имя таблицы и сгенерируйте INSERT-выражения на основе имён заголовков или автоматических col1, col2, col3. Весь конвейер работает на устройстве, поэтому содержимое исходной таблицы не покидает браузер — полезно при работе с внутренними прайс-листами, кадровыми данными или промежуточными снимками, которые не должны покидать ноутбук.
Согласование кавычек идентификаторов для черновика целевой базы данныхПереключайте кавычки для таблиц и столбцов между обратными кавычками, двойными кавычками и одинарными кавычками и при необходимости включайте простое CREATE TABLE с VARCHAR(255). Весь разбор и генерация SQL происходят локально, поэтому черновой скрипт можно проверить на корректность имён столбцов, типов данных и обработки кавычек перед выполнением на целевой базе данных.
Подготовка локальных начальных данных с понятными ограничениямиКонвертер сохраняет значения ячеек как SQL-строки или NULL и экранирует одинарные кавычки, но не определяет типы, ограничения, индексы, семантику дат, транзакции и синтаксис массовой загрузки. Рассматривайте вывод как черновик для начальных данных, а не как готовую миграцию.
Выбор подходящего стиля кавычек для целевой СУБДMySQL и SQLite принимают обратные кавычки, PostgreSQL требует двойные кавычки, а SQL Server предпочитает квадратные скобки; выберите нужный стиль в выпадающем списке, чтобы сгенерированный скрипт запустился в целевой консоли без ручных правок. Учтите, что SQLite интерпретирует двойные кавычки как строковые литералы, если не подразумевается контекст столбца DUAL, поэтому безопасный междиалектный вариант — одинарные кавычки для значений и обратные кавычки или скобки для имён таблиц и столбцов. Вывод типов тоже чисто лексический: столбец, первая непустая ячейка которого — 1, 2, 3, становится INT, столбец с 2024-01-01 экспортируется как строка, хотя выглядит как дата, а денежные ячейки с разделителем тысяч будут экспортированы с этим разделителем внутри строки.
Обёртка многострочных вставок в транзакциюСтраница выдаёт по одному INSERT на строку, что медленно и небезопасно для больших импортов. Оберните весь блок в пару BEGIN/COMMIT или используйте массовый загрузчик движка при переносе более нескольких сотен строк в рабочую базу данных. Определение строки заголовков проходит по первой непустой строке выбранного листа и генерирует `INSERT INTO ... (col1, col2, ...)` на основе её текста; ячейки DATE читаются по соглашению Excel о серийных номерах (дни с 1900-01-01 с учётом бага високосного 1900 года, сдвигающего 1 марта на день назад, поэтому 25569 — это юникс-эпоха 1970-01-01). Формульные ячейки, которые не были пересчитаны, сохраняют устаревшее значение `.value`, а объединённые диапазоны暴露уют только верхний левый якорь, поэтому широкая объединённая строка заголовка будет выглядеть для парсера как одно значение NULL.

Технический принцип

Страница разбирает загруженную рабочую книгу с помощью SheetJS — XLSX.read(arrayBuffer, {type: 'array'}) возвращает объект рабочей книги, чей лист содержит ячейки с индексацией по ключам A1, затем XLSX.utils.sheet_to_json(sheet, {header: 1, defval: null}) проходит по ограниченному диапазону !ref, формируя массив массивов. Первая непустая строка (когда включена опция «первая строка — заголовок») принимается за имена столбцов; иначе синтезируются имена в стиле SheetJS: col1, col2, col3. Каждая оставшаяся строка выводится как отдельный SQL-запрос вида INSERT INTO `table` (`c1`, `c2`, ...) VALUES (v1, v2, ...);, с опциональным CREATE TABLE `table` (`c1` VARCHAR(255), ...); в начале. Кавычки идентификаторов зависят от диалекта SQL и регулируются стандартом SQL:1992 и отклонениями каждого вендора: стандартный SQL и PostgreSQL берут идентификаторы в двойные кавычки ("col"), MySQL и MariaDB по умолчанию используют обратные кавычки (`col`) и принимают двойные только при включённом режиме ANSI_QUOTES, SQLite принимает оба варианта (а для обратной совместимости трактует двойные кавычки, которые не разрешаются как идентификаторы, как строковые литералы — известный подводный камень, документированный на странице SQLite Quirks), SQL Server и Sybase используют квадратные скобки ([col]). Кавычки значений следуют правилам строковых литералов SQL: одинарные кавычки оборачивают литерал, а внутренние одинарные кавычки удваиваются ('O''Brien'), согласно ISO/IEC 9075. Пустые ячейки соответствуют литералу NULL без кавычек, а не пустой строке ''; числовой ячейки с cell.t === 'n' выводятся без кавычек; булевы значения становятся 1/0 или TRUE/FALSE в зависимости от диалекта; даты требуют отдельной обработки. Ячейки с датами требуют особого внимания, поскольку SheetJS сохраняет underlying числовой серийный номер: Excel хранит даты как количество дней с 1900-01-01 с историческим багом високосного 1900-02-29, сдвигающим даты до марта 1900 на один день, а система Excel-for-Mac 1904 использует 1904-01-01 как эпоху. Преобразование в ISO 8601 (YYYY-MM-DD HH:mm:ss — формат, который принимают и MySQL DATETIME, и PostgreSQL TIMESTAMP) выполняется по формуле (serial - 25569) * 86400000 мс от юникс-эпохи с последующим форматированием в UTC. Вывод типов — чисто лексический и неглубокий: столбец, первая непустая ячейка которого целое число, становится INT, десятичное — DECIMAL(10,2), текст — VARCHAR(255), а столбец, начинающийся с 2024-01-01, может экспортироваться как строка, если исходная ячейка не помечена cell.t === 'd'. Массовые вставки выводятся по одному INSERT на строку, что медленно при масштабе; объединение 100–500 строк в один INSERT INTO t VALUES (...), (...), ...; сокращает сетевые круговые запросы примерно в 100 раз, а оборачивание скрипта в BEGIN; ... COMMIT; превращает импорт в одну атомарную транзакцию, откатываемую при ошибке первой строки.

  • Кавычки идентификаторов по диалектам: MySQL/MariaDB `col` (обратные кавычки, или "col" при включённом ANSI_QUOTES); PostgreSQL и стандартный SQL "col"; SQL Server [col]; SQLite принимает оба варианта (но "col" молча подставляется как строковый литерал, когда col не является известным идентификатором).
  • Экранирование строковых литералов (ISO/IEC 9075): оборачивание одинарными кавычками и удвоение внутренних (O'Brien → 'O''Brien'); никогда не вставляйте сырые обратные слеши — PostgreSQL standard_conforming_strings по умолчанию включён с версии 9.1.
  • Серийный номер даты Excel: дни с 1900-01-01 с багом 1900-02-29 (или 1904-01-01, если workbook.date1904 = true); строка ISO 8601 = new Date((serial - 25569) * 86400000).toISOString().
  • Вывод типов лексический: целые → INT, десятичные → DECIMAL(10,2), текст → VARCHAR(255); даты, которые выглядят как даты, но не помечены cell.t === 'd', экспортируются как строки; денежные ячейки с разделителем тысяч экспортируются с разделителем внутри строки.
  • Обработка NULL: пустая ячейка Excel становится литералом NULL без кавычек, а не '' — разница важна для столбцов NOT NULL и для COUNT(col), который пропускает NULL, но считает ''.
  • Массовая вставка: объединение 100–500 строк в один INSERT INTO t VALUES (...),(...),...; сокращает сетевые круговые запросы примерно в 100 раз по сравнению с одним INSERT на строку; max_allowed_packet в MySQL (по умолчанию 64 МБ) ограничивает размер одного запроса.
  • Оборачивайте сгенерированный скрипт в BEGIN;...COMMIT; (PostgreSQL/SQLite) или START TRANSACTION;...COMMIT; (MySQL InnoDB), чтобы одна неудачная строка откатывала всю пакетную операцию; таблицы MyISAM игнорируют транзакцию и частично фиксируют изменения.

Примеры

Лист Excel → выражения INSERT

Лист "users" (3 строки):
id | name    | email             | age
1  | Alice   | alice@mail.com    | 28
2  | Bob     | bob@mail.com      | 34

Сгенерированный SQL:
INSERT INTO users (id, name, email, age) VALUES (1, 'Alice', 'alice@mail.com', 28);
INSERT INTO users (id, name, email, age) VALUES (2, 'Bob', 'bob@mail.com', 34);

Один INSERT на несколько строк (быстрее импорт)

Используйте опцию «объединить строки» для массовой загрузки:

INSERT INTO products (sku, name, price) VALUES
  ('A001', 'USB-C Cable',  9.90),
  ('A002', 'HDMI Adapter', 14.50),
  ('A003', 'Mouse Pad',    4.25);

Сокращает 3 обращения к серверу до 1 — безопаснее для пакетов по 100–500 строк.

Экранирование кавычек в именах с апострофами

Исходная ячейка: O'Brien

Сгенерированный SQL (одинарные кавычки удвоены):
INSERT INTO customers (id, name) VALUES (42, 'O''Brien');

Обработка NULL — пустая ячейка Excel становится литералом NULL, а не '':
INSERT INTO customers (id, phone) VALUES (43, NULL);

Оборачивание импорта в транзакцию

BEGIN;
INSERT INTO orders (id, customer_id, total, created_at) VALUES (1001, 7, 199.50, '2026-06-01');
INSERT INTO orders (id, customer_id, total, created_at) VALUES (1002, 7, 42.00,  '2026-06-02');
INSERT INTO orders (id, customer_id, total, created_at) VALUES (1003, 9, 78.30,  '2026-06-03');
COMMIT;

Если любая строка завершится с ошибкой, весь пакет откатится.

Часто задаваемые вопросы

Загружается ли таблица на сервер?

Нет. Файл разбирается прямо в браузере с помощью SheetJS, и SQL генерируется локально. На сервер ничего не отправляется, поэтому даже конфиденциальные данные остаются на вашем устройстве.

Какой SQL получается на выходе?

Сначала идёт оператор CREATE TABLE, затем отдельные строки INSERT INTO (по одной строке на оператор). В сгенерированном SQL используется введённое вами имя таблицы и выбранный стиль кавычек (одинарные, двойные или обратные).

Как определяются типы столбцов?

Инструмент анализирует данные каждого столбца и подбирает наиболее узкий подходящий тип: INTEGER, DECIMAL, VARCHAR(N), BOOLEAN или DATE/DATETIME. Перед генерацией SQL вы можете изменить тип вручную. Столбцы со смешанными типами по умолчанию попадают в VARCHAR.

А как быть с датами Excel?

В Excel даты хранятся как порядковые числа. Инструмент выводит их в том виде, в котором они хранятся в листе. Проверьте сгенерированный SQL и при необходимости поправьте литералы дат под формат вашей целевой базы.

Как экранируются спецсимволы и кавычки?

Одинарные кавычки удваиваются (Smith's → Smith''s). Обратные слэши и Unicode передаются как есть — это соответствует строкам PostgreSQL по стандарту. Если вы работаете с MySQL без режима NO_BACKSLASH_ESCAPES, обратные слэши, возможно, придётся экранировать вручную.

Будет ли результат работать в MySQL, PostgreSQL, SQLite, MSSQL?

Базовые INSERT работают во всех четырёх СУБД. В CREATE TABLE используются переносимые типы (INT, VARCHAR, DECIMAL, DATE). Для специфичных диалектных типов (SERIAL, AUTO_INCREMENT, IDENTITY) подправьте оператор CREATE под вашу СУБД.

Вычисляются ли формулы?

Нет. Используется кэшированное значение, которое сохранил Excel. Если нужны актуальные результаты формул, откройте исходную книгу, пересчитайте, сохраните и загрузите файл заново.

Связанные инструменты

Конвертер CSV в SQL

Онлайн-инструмент для конвертации CSV в SQL с поддержкой пользовательских имён таблиц, разделителей и стилей кавычек. Быстрая конвертация данных CSV в SQL INSERT-выражения для удобного импорта в базу данных.

Конвертер Excel в JSON

Онлайн конвертер Excel в JSON. Поддерживает форматы .xlsx и .xls с выбором нескольких листов. Конвертируйте данные таблицы в формат JSON локально.

Инструмент форматирования SQL

Бесплатный онлайн-форматировщик SQL: красивое форматирование, минификация, смена регистра ключевых слов и подсветка синтаксиса для читаемых запросов.

Инструмент форматирования JSON

Онлайн-инструмент для форматирования JSON с подсветкой синтаксиса, обнаружением ошибок и сжатием. Одним нажатием форматируйте JSON данные, быстро находите ошибки формата.

Конвертер CSV в JSON

Бесплатный онлайн-конвертер CSV в JSON с поддержкой пользовательского разделителя и опцией использования первой строки как заголовка. Быстрая конвертация табличных данных в формат JSON.

Конвертер Word в PDF

Бесплатный онлайн-конвертер Word в PDF. Поддерживает форматы .docx и .doc с конвертацией в один клик, сохранением форматирования и автоматической оптимизацией размера PDF. Файлы удаляются после конвертации.