ToolActToolAct

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

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

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

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

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

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

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

Для production-данных или кодовой базы результат все равно нужно проверить parser, тестами или правилами проекта.

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

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

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

Безопасность импорта

  • Перед выполнением проверьте сгенерированные INSERT-инструкции: имя таблицы, порядок столбцов, экранирование, значения NULL и формат чисел.
  • Сначала выполните тестовую партию и оборачивайте импорт в транзакцию, если база данных это поддерживает.

Применение

Генерация INSERT-запросов из небольшого CSV-экспортаЗагрузите CSV, TSV или текстовую таблицу, выберите разделитель, задайте имя таблицы и получите SQL-инструкции INSERT с использованием имён заголовков или сгенерированных колонок col1, col2, col3. Разбор и генерация запросов выполняются в браузере, поэтому импортируемые строки не покидают устройство, пока вы не вставите их в psql, mysql или инструмент миграции.
Подстройка кавычек идентификаторов под стиль базы данныхПереключайтесь между обратными кавычками для MySQL, двойными кавычками для PostgreSQL/стандартного SQL и одинарными кавычками для строковых литералов, а также опционально добавьте простой CREATE TABLE с колонками VARCHAR(255). Используйте как контролируемый промежуточный шаг, затем проверьте SQL на целевой версии базы данных перед использованием.
Подготовка seed-данных с учётом ограничений SQLИнструмент экранирует одинарные кавычки и удвоенные кавычки в значениях, поддерживает четыре разделителя и хорошо подходит для демонстраций, локальных фикстур и черновиков административных правок, но не выводит типы данных, ограничения, индексы, транзакции и специфичный для БД синтаксис массовой загрузки вроде COPY, LOAD DATA или batching multi-row VALUES.
Добавление защиты IF NOT EXISTS при заполнении общих базОберните сгенерированную партию INSERT в транзакцию BEGIN/COMMIT или совместите с ручным паттерном DELETE/INSERT, чтобы повторный запуск seed не дублировал строки в схемах разработки и стейджинга. Поскольку весь разбор локальный, вы можете итерировать seed без повторной загрузки клиентских или staging-данных во внешний сервис.
Настройка VARCHAR(255) когда реальные колонки требуют TEXT или DECIMALЧерновик CREATE TABLE использует VARCHAR(255) для каждой колонки, поэтому скорректируйте длинные описания на TEXT, денежные значения на DECIMAL(p,s), а метки времени на TIMESTAMP в миграции перед запуском в production. Сравните сгенерированные типы колонок с реальной схемой, а не применяйте черновик буквально. Вывод типов здесь чисто лексический: колонка `1234` считается INT, а `12.50` — DECIMAL, только если образцовая строка уже это доказывает; пустая ячейка становится NULL, а не пустой строкой `''` (согласно трёхзначной логике SQL); очистка имени таблицы убирает пробелы и пунктуацию, но не заключает в кавычки зарезервированные слова вроде `order` или `user` для MySQL. Большинству движков полезно батчить вставки группами примерно по 1000 строк на multi-row VALUES, чтобы уложиться в лимит размера пакета.

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

Входные данные CSV разбираются конечным автоматом, совместимым с RFC 4180 (обработка полей в кавычках, экранированных удвоенных кавычек и окончаний строк CRLF/LF), а затем выводятся как инструкции ANSI SQL INSERT. Две грамматики не пересекаются: CSV использует удвоение двойных кавычек для экранирования ("O""Brien"), а SQL использует удвоение одинарных кавычек внутри строковых литералов ('O''Brien') согласно ISO/IEC 9075. Конвертер перезаписывает каждую внутреннюю одинарную кавычку на пару перед обёртыванием значения в одинарные кавычки — это единственный механизм экранирования, гарантированно работающий в MySQL, PostgreSQL, SQLite, SQL Server и Oracle. Кавычки идентификаторов зависят от диалекта: MySQL использует обратные кавычки `users`, PostgreSQL и SQL Server — двойные кавычки "users" (с учётом регистра при кавычках), а SQLite принимает оба варианта — выберите стиль, соответствующий целевому движку, чтобы избежать ошибок «неизвестный столбец», вызванных приведением регистра. Вывод типов намеренно минимален, поскольку CSV не содержит метаданных о типах. Необязательный черновик CREATE TABLE выводит VARCHAR(255) для каждого столбца — безопасно, но неоптимально — и оставляет пользователю замену на INT, BIGINT, DECIMAL(p,s), DATE, TIMESTAMP или TEXT перед запуском в production. Пустые ячейки выводятся как NULL (отсутствие по трёхзначной логике SQL), а не как пустая строка '', поскольку большинство экспортов из таблиц используют пустое поле для представления отсутствующих данных; если различие с пустой строкой важно, используйте типизированный загрузчик. Зарезервированные слова вроде user, order и group НЕ заключаются в кавычки автоматически, поэтому столбец с именем order не будет разобран на MySQL, пока пользователь вручную не обернёт его в обратные кавычки. Для больших импортов однострочные инструкции INSERT корректны, но медленны: значение max_allowed_packet по умолчанию в MySQL — 64 МБ, а многострочный INSERT INTO t VALUES (...), (...), (...) партиями по ~1000 строк на инструкцию обычно в 5-10 раз быстрее, чем одна инструкция на строку, из-за сетевых круговых запросов и накладных расходов на разбор. Обёртка партии в BEGIN; ... COMMIT; позволяет базе данных кэшировать вставки и фиксировать их атомарно, что необходимо, когда частичная вставка оставит связь внешнего ключа в несогласованном состоянии. Обратите внимание, что этот инструмент не выводит внешние ключи, индексы, ограничения первичного ключа или AUTO_INCREMENT — он конвертирует только данные строк, поэтому принимающая схема должна уже существовать, или черновик CREATE TABLE должен быть отредактирован перед выполнением. Для массовой загрузки миллионов строк предпочтительнее нативный синтаксис БД: PostgreSQL COPY FROM, MySQL LOAD DATA INFILE или SQL Server bcp.

  • Экранирование строковых литералов SQL по ISO/IEC 9075: одинарные кавычки удваиваются ('O''Brien'), а не экранируются обратным слешем.
  • Кавычки идентификаторов различаются: ` для MySQL, " для PostgreSQL/SQL Server, оба принимаются в SQLite.
  • Пустая ячейка CSV -> SQL NULL (трёхзначная логика), а не '' — различие с пустой строкой теряется.
  • Зарезервированные слова (order, user, group) не заключаются в кавычки автоматически; требуется ручное экранирование.
  • Многострочные INSERT партиями по ~1000 строк дают ~5-10x пропускной способности по сравнению с однострочными инструкциями (max_allowed_packet в MySQL по умолчанию 64 МБ).
  • Оборачивайте в BEGIN; ... COMMIT; для атомарных seed-вставок; частичные сбои откатываются чисто.
  • Массовая загрузка свыше 1 млн строк: предпочтительнее PostgreSQL COPY, MySQL LOAD DATA INFILE, SQL Server bcp вместо генерируемых INSERT.

Примеры

Базовый CSV -> INSERT-выражения (MySQL с обратными кавычками)

CSV:
id,name,email
1,Alice,alice@example.com
2,Bob,bob@example.com

SQL:
INSERT INTO `users` (`id`, `name`, `email`) VALUES (1, 'Alice', 'alice@example.com');
INSERT INTO `users` (`id`, `name`, `email`) VALUES (2, 'Bob',   'bob@example.com');

С CREATE TABLE (стиль PostgreSQL с двойными кавычками)

CSV:
product_id,price,in_stock
101,29.99,true
102,15.50,false

SQL:
CREATE TABLE "products" (
  "product_id" VARCHAR(255),
  "price"      VARCHAR(255),
  "in_stock"   VARCHAR(255)
);
INSERT INTO "products" ("product_id", "price", "in_stock") VALUES ('101', '29.99', 'true');
INSERT INTO "products" ("product_id", "price", "in_stock") VALUES ('102', '15.50', 'false');
-- Совет: замените VARCHAR(255) на INT / DECIMAL(10,2) / BOOLEAN перед запуском в проде.

Экранирование одинарных кавычек в значениях

CSV:
id,note
1,O'Brien signed off
2,It's already done

SQL:
INSERT INTO `notes` (`id`, `note`) VALUES (1, 'O''Brien signed off');
INSERT INTO `notes` (`id`, `note`) VALUES (2, 'It''s already done');
Примечание: одинарные кавычки удваиваются (''), это стандартное SQL-экранирование.

Вывод типов — INT vs DECIMAL vs TEXT

CSV:
user_id,score,bio
1,100,Hello
2,87.5,Long bio text...

Определённые типы (эвристика):
  user_id -> INT
  score   -> DECIMAL(10,2)
  bio     -> VARCHAR(255)  (рассмотрите TEXT для более длинного содержимого)

Предпросмотр SQL:
INSERT INTO `students` (`user_id`, `score`, `bio`) VALUES (1, 100, 'Hello');
INSERT INTO `students` (`user_id`, `score`, `bio`) VALUES (2, 87.5, 'Long bio text...');

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

Какой именно SQL генерирует инструмент?

Он выдаёт стандартные CREATE TABLE плюс INSERT INTO. По умолчанию диалект — переносимый SQL: работает в MySQL, PostgreSQL, SQLite, MSSQL с минимальными правками типов. На некоторых страницах можно выбрать целевой диалект для типов данных (VARCHAR vs TEXT, INT vs INTEGER и т.п.).

Откуда берутся имена колонок?

Из первой строки CSV, когда включено «первая строка — заголовок». Страница приводит имена в порядок, заменяя пробелы на подчёркивания и заключая зарезервированные слова в кавычки. С отключёнными заголовками колонки именуются как col_1, col_2 и т.д.

Как определяется тип данных для каждой колонки?

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

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

Одинарные кавычки внутри строковых значений экранируются удвоением (O'Brien → 'O''Brien'). Обратные слэши и Unicode-символы передаются как есть — это соответствует поведению PostgreSQL при standard_conforming_strings = on. Если целевая БД — MySQL, проверьте результат с учётом режима NO_BACKSLASH_ESCAPES.

Чем NULL отличается от пустой строки?

Пустая ячейка CSV (например, 'a,,c') становится SQL NULL; пустая строка в кавычках ('a,"",c') становится ''. Страница следует этому соглашению. Отключите «считать пустое значение как NULL», если для обоих случаев нужны пустые строки.

Загружаются ли мои данные куда-либо?

Нет. CSV разбирается, а SQL генерируется в вашем браузере. Входные и выходные данные не покидают страницу. Используйте результат как SQL-скрипт, который вы сами импортируете на свой сервер БД.

Стоит ли использовать сгенерированный SQL на боевой базе?

Сначала проверьте его. CREATE TABLE может не совпадать с вашей существующей схемой; INSERT не включают ограничения, внешние ключи и индексы. Используйте его как заготовку, которую можно отредактировать — особенно в части первичных ключей, ограничений NOT NULL и корректных типов данных.

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

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

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

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

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

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

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

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

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

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

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

Инструмент тестирования регулярных выражений

Бесплатный онлайн-тестер регулярных выражений с мгновенным сопоставлением и подсветкой совпадений. Отлаживайте и проверяйте regex на ваших примерах.