Конвертация Excel в SQL Server
Перетащите файл Excel, чтобы получить скрипт для SQL Server с командами CREATE TABLE и INSERT. Каждый столбец получает тип, а каждое исправление указано со строкой и столбцом.
4 строки конвертированы, 10 исправлений, ни одна не отклонена
| Строка | ||||||
|---|---|---|---|---|---|---|
| 5 | 00127 | Peña Muñoz | 01234 | 03/02/2024 | sí | 1.234,50 |
| 6 | 00128 | José Ángel | 09870 | 15/02/2024 | no | N/A |
| 7 | 00129 | Zoë Ortíz | 44100 | 29/02/2024 | sí | -12,00 |
| 8 | 00130 | Ñuño Castañeda | 06700 | 11/03/2024 | no | 980,75 |
-- Written by IntoSQL for SQL Server.
SET NOCOUNT ON;
BEGIN TRANSACTION;
CREATE TABLE clientes_2024 (
no_cliente nvarchar(8) NOT NULL, -- Nº Cliente
nombre nvarchar(16) NOT NULL,
c_p nvarchar(8) NOT NULL, -- C.P.
alta date NOT NULL,
activo bit NOT NULL,
saldo decimal(6,2)
);
INSERT INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES
(N'00127', N'Peña Muñoz', N'01234', '2024-02-03', 1, 1234.50),
(N'00128', N'José Ángel', N'09870', '2024-02-15', 0, NULL),
(N'00129', N'Zoë Ortíz', N'44100', '2024-02-29', 1, -12.00),
(N'00130', N'Ñuño Castañeda', N'06700', '2024-03-11', 0, 980.75);
COMMIT TRANSACTION;
Исправления
- Заголовок находится в строке 4; строки над ним не включены.
- Строка 9 ("TOTAL") содержит итог, поэтому она не включена.
- Столбец "Nº Cliente" теперь называется no_cliente, чтобы SQL Server читал его без кавычек.
- Столбец "C.P." теперь называется c_p, чтобы SQL Server читал его без кавычек.
- В "Nº Cliente" сохранены ведущие нули: 00127 остается 00127 и хранится как текст.
- В "C.P." сохранены ведущие нули: 01234 остается 01234 и хранится как текст.
- 15/02/2024 доказывает, что даты в "Alta" начинаются с дня, поэтому 03/02/2024 читается как 2024‑02‑03.
- "Activo" содержит слова да и нет (sí, no), они сохранены как логические значения.
- Числа в "Saldo" записаны с десятичной запятой: 1.234,50 читается как 1234.50.
- N/A в "Saldo" прочитаны как пустые (значений: 1 из 4).
Файл конвертируется на этом компьютере и никуда не загружается.
Другие примеры:
Из Excel в SQL Server, столбец за столбцом
Пример выше, clientes_2024.xlsx, в том виде, в котором IntoSQL записывает его для SQL Server: что хранит каждый столбец в файле, какой тип он получает и как его первое значение попадает в скрипт.
| В файле | Первое значение | Столбец | Тип в SQL Server | В скрипте |
|---|---|---|---|---|
| Nº Cliente | 00127 | no_cliente | nvarchar(8) | N'00127' |
| Nombre | Peña Muñoz | nombre | nvarchar(16) | N'Peña Muñoz' |
| C.P. | 01234 | c_p | nvarchar(8) | N'01234' |
| Alta | 03/02/2024 | alta | date | '2024-02-03' |
| Activo | sí | activo | bit | 1 |
| Saldo | 1.234,50 | saldo | decimal(6,2) | 1234.50 |
Загрузите скрипт в SQL Server
Вы скачиваете обычный файл .sql. Запустите его штатными средствами SQL Server.
Из терминала
sqlcmd -S localhost -d mydb -f 65001 -i clientes_2024.sql_server.sql-f 65001 читает файл как UTF-8, поэтому кириллица и ñ доходят в том виде, в котором записаны.
Из клиента базы данных
В SQL Server Management Studio или Azure Data Studio откройте файл и выберите Execute.
Что нужно знать о файлах Excel и SQL Server
Что IntoSQL читает в файлах Excel
- Строка заголовков находится, даже если над ней есть названия или заметки, а строка итогов в конце не попадает в результат.
- Даты, сохраненные как порядковые номера Excel, становятся настоящими датами, и в системе дат 1900, и в системе 1904.
- Коды с ведущими нулями, например 00127, остаются текстом. Если в книге несколько листов, вы выбираете лист.
Что нужно знать о SQL Server
- Текст хранится как nvarchar со значениями N'...', поэтому диакритика сохраняется; текст длиннее 4000 символов становится nvarchar(max).
- Значения да и нет становятся bit, а даты со смещением становятся datetimeoffset.
- Длинные значения записываются частями, поэтому sqlcmd и SQL Server Management Studio принимают скрипт.
Как каждый вид значений хранится в SQL Server
| Значение | SQL Server |
|---|---|
| Да и нет | bit |
| Целые числа | int |
| Большие целые числа | bigint |
| Десятичные числа | decimal(p,s) |
| Числа с плавающей точкой | float |
| Даты | date |
| Время суток | time |
| Даты со временем | datetime2 |
| Даты со временем и смещением | datetimeoffset |
| Текст | nvarchar(n)nvarchar(max) |
Вопросы о Excel в SQL Server
Нет ответа на ваш вопрос? Напишите нам через страницу контактов, и вам ответит человек. Страница контактов
Как конвертировать Excel в SQL Server?
Перетащите файл в конвертер в верхней части этой страницы. Он находит заголовок, читает каждое значение и записывает скрипт для SQL Server, перечисляя каждое исправление. Скачайте скрипт и запустите его через sqlcmd.
Какой лист книги конвертируется?
Первый видимый лист. Если в книге их несколько, появляется параметр Лист, где можно выбрать другой.
Какие типы SQL Server используются?
Значения да и нет становятся bit, целые числа int, дробные decimal(p,s), даты date, даты со временем datetime2, а текст nvarchar(n). Размеры берутся по самому длинному значению в каждом столбце.
Сохраняются ли ведущие нули в SQL Server?
Да. Код вроде 00127 остается текстом, поэтому SQL Server хранит его как nvarchar(8), а скрипт записывает как N'00127'.
Можно ли загрузить данные в SQL Server без скрипта?
Нет. Скачайте скрипт и запустите его через sqlcmd. Загрузка без скрипта работает для PostgreSQL, MySQL, MariaDB и SQLite из приложения для компьютера или командной строки.
Насколько большим может быть файл Excel?
В браузере книга читается целиком, поэтому предел - это память, которую браузер выделяет этой странице. Приложение для компьютера и командная строка принимают книги любого размера; на ноутбуке с Apple M4 командная строка конвертирует книгу 117 МБ с миллионом строк примерно за секунду.