SQL Server BULK INSERT-оператор

В этом руководстве вы узнаете, как использовать оператор SQL Server BULK INSERT для импорта файла данных в таблицу базы данных.

Введение в оператор SQL Server BULK INSERT

Оператор BULK INSERT позволяет импортировать файл данных в таблицу или представление в SQL Server. Ниже показан базовый синтаксис оператора BULK INSERT:

BULK INSERT table_name
FROM path_to_file
WITH options;

В этом синтаксисе:

  • Сначала укажите имя таблицы в предложении BULK INSERT. Обратите внимание, что вы можете использовать полное имя таблицы, например database_name.schema_name.table_name.
  • Во-вторых, укажите путь к файлу в предложении FROM.
  • В-третьих, используйте один или несколько параметров после ключевого слова WITH.

Подробную информацию об операторе BULK INSERT можно прочитать здесь.

Пример оператора BULK INSERT для SQL Server

Рассмотрим пример использования оператора BULK INSERT для загрузки данных из файла со значениями, разделенными запятыми(CSV), в таблицу.

Сначала создайте базу данных под названием HR:

CREATE DATABASE HR;
GO

Далее создайте новую таблицу «Сотрудники» в базе данных HR:

USE HR;
CREATE TABLE Employees(
  Id int IDENTITY PRIMARY KEY,
  FirstName varchar(50) NOT NULL,
  LastName varchar(50) NOT NULL
);

Таблица «Сотрудники» содержит три столбца: Id, FirstName и LastName.

Затем подготовьте CSV-файл с путем D:\data\employees.csv, который содержит следующее:

Id,First name,Last name
1,John,Doe
2,Jane,Doe
3,Lily,Bush

Файл employees.csv содержит четыре строки. Первая строка содержит заголовок файла, а три последние строки содержат фактические данные. На практике файл данных обычно содержит много строк.

После этого загрузите данные из файла employees.csv в таблицу Employees:

BULK INSERT Employees
FROM 'D:\data\employees.csv'
WITH(
  FIELDTERMINATOR = ',',
  ROWTERMINATOR = '\n',
  FIRSTROW = 2
);

В этом заявлении:

  • Имя таблицы — Employees. Если вы подключаетесь к главной базе данных, вам нужно указать полное имя таблицы, например HR.dbo.Employees
  • Путь к файлу данных — D:\data\employees.csv.
  • Предложение WITH имеет три параметра: Запятая(,) как FIELDTERMINATOR, которая является разделителем между столбцами. Новая строка('\n') как ROWTERMINATOR, которая разделяет строки. Первая строка(FIRSTROW) начинается с цифры два, а не один, потому что мы не будем загружать заголовок в таблицу Employees.

Наконец, запросите данные из таблицы Employees:

SELECT * FROM employees;

Выход:

Краткое содержание

  • Используйте оператор BULK INSERT для импорта данных из файла в таблицу.
Мирослав С.

Автор статей, ИБ-специалист