среда, 8 апреля 2015 г.

Загрузка в MS SQL из csv файла

Для загрузки из csv файла можно воспользоваться командой BULKINSERT в данной заметки приведен перевод примера загрузки из Pinal Dave (http://blog.SQLAuthority.com)
Очень распространенный вопрос - Как импортировать CSV - файл в MS SQL Server? Как загрузить CSV - файл в таблице базы данных SQL Server ? Как загрузить значения из файла разделенного запятыми в SQL Server? Рассмотрим решение быстрое решение.
CSV означает Comma Separated Values (значения разделенные запятыми), иногда называемых также Comma Delimited Values.
Создадим таблицу TestTable в тестовой базе данных TestData.


USE TestData
GO
CREATE TABLE CSVTest (ID INT, FirstName VARCHAR(40), LastName VARCHAR(40), BirthDate SMALLDATETIME) GO

Создайте CSV файл на диске C: с ниже следующим содержанием. Расположение файла должно быть C:\csvtest.txt

1,James,Smith,19750101
2,Meggie,Smith,19790122
3,Robert,Smith,20071101
4,Alex,Smith,20040202




Теперь запустите следующий скрипт для загрузки всех данных из CSV в таблицу базы данных. Если будут ошибки в некоторых, то эта строка не загрузится, но другие строки будут загружены.

BULK INSERT CSVTest
           FROM 'c:\csvtest.txt'
           WITH
           (
               FIELDTERMINATOR = ',',
               ROWTERMINATOR = '\n'
           )
GO
--Check the content of the table.
SELECT *
FROM CSVTest
GO
--Drop the table to clean up database.
DROP TABLE CSVTest
GO

Теперь я хочу описать некоторые проблемы которые могут возникнуть при загрузку данных.
1.Ошибка прав на BULK INSERT. В этом случае у пользователя под котором прошла авторизация, не имеет права на использования BULK INSERT. В результате выполнения команды появится примерно такое сообщение

Msg 4834, Level 16, State 1, Line 2 You do not have permission to use the bulk load statement.
Такое может появиться даже у пользователя с права "sysadmin". Для решения проблемы нужно дать права следующей командой.

GRANT ADMINISTER BULK OPERATIONS TO [server_login]


2.Файл, который необходимо загрузить должен находиться на компьютере где установлен сервер MS SQL. Так же его можно разместить в "расшаренной" паке на своём компьютере, тогда путь к файлу будет иметь примерно такой вид:

\\[Computer name]\[Folder name]\[File]
Необходимо также дать права на доступ к папке пользователю MS SQL.

Подробное описание BULK INSERT https://msdn.microsoft.com/ru-ru/library/ms188365.aspx

Комментариев нет:

Отправить комментарий