Что это
Чтобы загрузить таблицу в базу данных, обычно приходится вручную писать определение таблицы и длинный список операторов INSERT, экранируя каждый апостроф. Этот инструмент делает это за вас: вставьте CSV и получите готовый к запуску SQL-скрипт с оператором CREATE TABLE и многострочными INSERT, разбитыми на пакеты.
Он следует RFC 4180: обрабатывает поля в кавычках, запятые и переводы строк внутри ячеек, удвоенные кавычки. Строки экранируются правильно для выбранной СУБД, включая обратные косые черты в MySQL и Unicode-строки N'…' в SQL Server.
Как пользоваться
- Вставьте CSV, загрузите файл
.csvили.tsvлибо нажмите Пример. - Укажите Имя таблицы. Для схемы используйте точку, например
public.ordersилиdbo.orders. - Выберите Диалект: MySQL / MariaDB, PostgreSQL, SQLite или SQL Server.
- Выберите число Строк в одном INSERT и отключите CREATE TABLE, если таблица уже существует.
- Скопируйте 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 выполняются полностью в браузере, данные не покидают ваше устройство.