Конвертация CSV в SQL
Перетащите файл CSV и выберите базу данных, чтобы получить скрипт SQL с командами CREATE TABLE и INSERT. Каждый столбец получает тип, а каждое исправление указано со строкой и столбцом.
5 строк конвертировано, 8 исправлений, ни одна не отклонена
| Строка | ||||||
|---|---|---|---|---|---|---|
| 5 | 00412 | Peña Muñoz | Mérida | 15/02/2024 | 1.234,50 | sí |
| 6 | 00413 | José Ángel Ruiz | León | 03/02/2024 | 99,90 | no |
| 7 | 00414 | Zoë Ortíz | Querétaro | 29/02/2024 | N/A | sí |
| 8 | 00415 | Ñuño Castañeda | Oaxaca | 28/02/2024 | 7,25 | no |
| 9 | 00416 | Iñaki Olaizola | Mazatlán | 11/03/2024 | 980,75 | sí |
-- Written by IntoSQL for PostgreSQL.
SET client_encoding = 'UTF8';
BEGIN;
CREATE TABLE ventas_2024 (
folio text NOT NULL,
cliente text NOT NULL,
ciudad text NOT NULL,
fecha date NOT NULL,
importe numeric(6,2),
pagado boolean NOT NULL
);
INSERT INTO ventas_2024 (folio, cliente, ciudad, fecha, importe, pagado) VALUES
('00412', 'Peña Muñoz', 'Mérida', '2024-02-15', 1234.50, TRUE),
('00413', 'José Ángel Ruiz', 'León', '2024-02-03', 99.90, FALSE),
('00414', 'Zoë Ortíz', 'Querétaro', '2024-02-29', NULL, TRUE),
('00415', 'Ñuño Castañeda', 'Oaxaca', '2024-02-28', 7.25, FALSE),
('00416', 'Iñaki Olaizola', 'Mazatlán', '2024-03-11', 980.75, TRUE);
COMMIT;
Исправления
- Файл был в кодировке windows‑1252; он преобразован в UTF-8.
- Заголовок находится в строке 4; строки над ним не включены.
- Строка 10 ("TOTAL") содержит итог, поэтому она не включена.
- В "Folio" сохранены ведущие нули: 00412 остается 00412 и хранится как текст.
- 15/02/2024 доказывает, что даты в "Fecha" начинаются с дня, поэтому 03/02/2024 читается как 2024‑02‑03.
- Числа в "Importe" записаны с десятичной запятой: 1.234,50 читается как 1234.50.
- N/A в "Importe" прочитаны как пустые (значений: 1 из 5).
- "Pagado" содержит слова да и нет (sí, no), они сохранены как логические значения.
Файл конвертируется на этом компьютере и никуда не загружается.
Другие примеры:
Один файл CSV, шесть баз данных
Пример выше, ventas_2024.csv, и тип, который каждый его столбец получает в каждой базе данных.
| В файле | Первое значение | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|---|
| Folio | 00412 | text | varchar(8) | varchar(8) | TEXT | nvarchar(8) | VARCHAR2(8 CHAR) |
| Cliente | Peña Muñoz | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Ciudad | Mérida | text | varchar(16) | varchar(16) | TEXT | nvarchar(16) | VARCHAR2(16 CHAR) |
| Fecha | 15/02/2024 | date | date | date | DATE | date | DATE |
| Importe | 1.234,50 | numeric(6,2) | decimal(6,2) | decimal(6,2) | NUMERIC(6,2) | decimal(6,2) | NUMBER(6,2) |
| Pagado | sí | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
Загрузите скрипт в свою базу данных
Вы скачиваете обычный файл .sql. Каждая база данных запускает его своими средствами.
PostgreSQL
psql -v ON_ERROR_STOP=1 -d mydb -f ventas_2024.postgresql.sqlON_ERROR_STOP останавливает psql на первой ошибке. Скрипт выполняется в одной транзакции, поэтому неудачная загрузка оставляет базу без изменений.
MySQL
mysql --default-character-set=utf8mb4 mydb < ventas_2024.mysql.sqlСкрипт сам задает utf8mb4; флаг заставляет клиент передавать данные так же, поэтому кириллица и другие символы доходят без искажений.
MariaDB
mariadb --default-character-set=utf8mb4 mydb < ventas_2024.mariadb.sqlСкрипт сам задает utf8mb4; флаг заставляет клиент передавать данные так же, поэтому кириллица и другие символы доходят без искажений.
SQLite
sqlite3 ventas_2024.db < ventas_2024.sqlite.sqlФайл базы данных создается, если его нет. Конвертер также скачивает готовую базу .sqlite, вообще без команд.
SQL Server
sqlcmd -S localhost -d mydb -f 65001 -i ventas_2024.sql_server.sql-f 65001 читает файл как UTF-8, поэтому кириллица и ñ доходят в том виде, в котором записаны.
Oracle
sqlplus user@//localhost/mydb @ventas_2024.oracle.sqlСкрипт отключает переменные подстановки (SET DEFINE OFF), поэтому амперсанд в ваших данных остается амперсандом.
Командная строка бесплатно загружает файлы прямо в базу SQLite. С IntoSQL Pro она и приложение для компьютера загружают также в PostgreSQL, MySQL и MariaDB. Для SQL Server и Oracle запустите скрипт.
Что нужно знать о файлах CSV и каждой базе данных
Что IntoSQL читает в файлах CSV
- Кодировка определяется автоматически, включая Windows-1252 и UTF-16, поэтому буквы с диакритикой и ñ приходят без искажений.
- Разделитель определяется автоматически: запятая, точка с запятой, табуляция или вертикальная черта. При точке с запятой десятичные запятые, как в 1.234,50, читаются как числа.
- Значения в кавычках могут содержать разделители и переносы строк.
Что нужно знать о каждой базе данных
- Выберите базу данных после открытия файла: каждая получает типы, которые поддерживает.
Как каждый вид значений хранится в каждой базе данных
| Значение | PostgreSQL | MySQL | MariaDB | SQLite | SQL Server | Oracle |
|---|---|---|---|---|---|---|
| Да и нет | boolean | tinyint(1) | tinyint(1) | BOOLEAN | bit | NUMBER(1) |
| Целые числа | integer | int | int | INTEGER | int | NUMBER(10) |
| Большие целые числа | bigint | bigint | bigint | INTEGER | bigint | NUMBER(19) |
| Десятичные числа | numeric(p,s) | decimal(p,s)double | decimal(p,s)double | NUMERIC(p,s)TEXT | decimal(p,s) | NUMBER(p,s) |
| Числа с плавающей точкой | double precision | double | double | REAL | float | BINARY_DOUBLE |
| Даты | date | date | date | DATE | date | DATE |
| Время суток | time | time(6)time | time(6)time | TIME | time | INTERVAL DAY(0) TO SECOND |
| Даты со временем | timestamp | datetime(6)datetime | datetime(6)datetime | DATETIME | datetime2 | TIMESTAMP |
| Даты со временем и смещением | timestamptz | datetime(6)datetime | datetime(6)datetime | DATETIME | datetimeoffset | TIMESTAMP WITH TIME ZONE |
| Текст | text | varchar(n)textmediumtextlongtext | varchar(n)textmediumtextlongtext | TEXT | nvarchar(n)nvarchar(max) | VARCHAR2(n CHAR)CLOB |
Вопросы о CSV в SQL
Нет ответа на ваш вопрос? Напишите нам через страницу контактов, и вам ответит человек. Страница контактов
Как конвертировать CSV в SQL?
Перетащите файл в конвертер в верхней части этой страницы и выберите базу данных: PostgreSQL, MySQL, MariaDB, SQLite, SQL Server или Oracle. Каждая получает типы, которые поддерживает. Скачайте скрипт и запустите его в своей базе.
Что, если в моем CSV точки с запятой или табуляции?
Разделитель определяется автоматически: запятая, точка с запятой, табуляция или вертикальная черта. Его также можно задать в разделе Другие параметры. При точке с запятой десятичные запятые вроде 1.234,50 читаются как числа.
Какие типы используются в каждой базе данных?
У каждой базы свои: значения да и нет - это boolean в PostgreSQL, tinyint(1) в MySQL и MariaDB, bit в SQL Server и NUMBER(1) в Oracle. Таблица на этой странице перечисляет каждый вид значений.
Сохраняются ли ведущие нули?
Да. Код вроде 00412 остается текстом в любой базе данных и записывается как '00412', поэтому ни один ноль не теряется.
Можно ли загрузить данные без скрипта?
Да. Командная строка бесплатно загружает в SQLite, а с IntoSQL Pro приложение для компьютера и командная строка загружают в PostgreSQL, MySQL и MariaDB. Для SQL Server и Oracle запустите скрипт.
Насколько большим может быть файл CSV?
Браузер читает CSV потоково, по мере загрузки, поэтому работают файлы в несколько гигабайт. На ноутбуке с Apple M4 командная строка конвертирует CSV 174 МБ с миллионом строк меньше чем за секунду.