Для загрузки из 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.
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
Теперь запустите следующий скрипт для загрузки всех данных из CSV в таблицу базы данных. Если будут ошибки в некоторых, то эта строка не загрузится, но другие строки будут загружены.
Теперь я хочу описать некоторые проблемы которые могут возникнуть при загрузку данных.
1.Ошибка прав на BULK INSERT. В этом случае у пользователя под котором прошла авторизация, не имеет права на использования BULK INSERT. В результате выполнения команды появится примерно такое сообщение
2.Файл, который необходимо загрузить должен находиться на компьютере где установлен сервер MS SQL. Так же его можно разместить в "расшаренной" паке на своём компьютере, тогда путь к файлу будет иметь примерно такой вид:
Подробное описание BULK INSERT https://msdn.microsoft.com/ru-ru/library/ms188365.aspx
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
Комментариев нет:
Отправить комментарий