DevToolPal
RU

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

Превращает CSV в операторы CREATE TABLE и INSERT для MySQL, PostgreSQL, SQLite или SQL Server с автоматическим определением типов столбцов.

Работает локально, без загрузки на сервер

Параметры

Ввод

Символов: 0 · 0 B

Результат

Символов: 0 · 0 B

Что это

Чтобы загрузить таблицу в базу данных, обычно приходится вручную писать определение таблицы и длинный список операторов INSERT, экранируя каждый апостроф. Этот инструмент делает это за вас: вставьте CSV и получите готовый к запуску SQL-скрипт с оператором CREATE TABLE и многострочными INSERT, разбитыми на пакеты.

Он следует RFC 4180: обрабатывает поля в кавычках, запятые и переводы строк внутри ячеек, удвоенные кавычки. Строки экранируются правильно для выбранной СУБД, включая обратные косые черты в MySQL и Unicode-строки N'…' в SQL Server.

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

  1. Вставьте CSV, загрузите файл .csv или .tsv либо нажмите Пример.
  2. Укажите Имя таблицы. Для схемы используйте точку, например public.orders или dbo.orders.
  3. Выберите Диалект: MySQL / MariaDB, PostgreSQL, SQLite или SQL Server.
  4. Выберите число Строк в одном INSERT и отключите CREATE TABLE, если таблица уже существует.
  5. Скопируйте SQL или скачайте его как файл .sql и выполните в клиенте базы данных.

Разделитель определяется автоматически; можно также явно задать запятую, точку с запятой, табуляцию или вертикальную черту. Если в первой строке данные, а не имена столбцов, отключите Первая строка — заголовок, и столбцы получат имена column_1, column_2 и так далее.

Пример

Такой CSV:

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

превращается в такой скрипт для PostgreSQL:

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

Апостроф в Ada's удвоен, пустая цена стала NULL, а числа и логические значения записаны без кавычек.

Типы и диалекты

  • MySQL / MariaDB: идентификаторы в обратных кавычках, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) или TEXT; обратные косые черты в строках экранируются.
  • PostgreSQL: идентификаторы в двойных кавычках, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP и TEXT.
  • SQLite: идентификаторы в двойных кавычках и классы хранения SQLite INTEGER, REAL и TEXT; логические значения записываются как 1 и 0.
  • SQL Server: идентификаторы в квадратных скобках, INT, DECIMAL, BIT, DATE, DATETIME2 и NVARCHAR, строковые литералы N'…' и не более 1000 строк в одном INSERT.
  • Пустые ячейки становятся NULL. Отключите Пустые ячейки как NULL, чтобы в текстовых столбцах оставались пустые строки.
  • Проверьте определённые типы, прежде чем запускать скрипт на рабочих данных: столбцу, где в образце только маленькие числа, позже может понадобиться более широкий тип.

Частые вопросы

› Какие базы данных поддерживаются?

MySQL (и MariaDB), PostgreSQL, SQLite и Microsoft SQL Server. От диалекта зависит, как заключаются в кавычки имена таблиц и столбцов, как экранируются строки, какие типы столбцов используются и как записываются логические значения.

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

Каждый столбец просматривается: целые числа становятся INT или BIGINT, дробные — DECIMAL с достаточной точностью, true/false — BOOLEAN (BIT в SQL Server), даты ISO — DATE или DATETIME, всё остальное — текстом. Числа с ведущими нулями, например почтовые индексы, остаются текстом. Отключите «Определять типы», чтобы все столбцы были текстовыми.

› Почему в SQL Server не больше 1000 строк в одном INSERT?

SQL Server отклоняет список VALUES длиннее 1000 строк, поэтому для этого диалекта больший размер пакета ограничивается 1000. Другие СУБД принимают пакеты крупнее, но 100–1000 строк на оператор — хороший баланс между скоростью и размером.

› Мой CSV куда-то отправляется?

Нет. Разбор и генерация SQL выполняются полностью в браузере, данные не покидают ваше устройство.