DevToolPal
UK

Конвертер 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 виконуються повністю у браузері, дані не залишають ваш пристрій.