BULK INSERT код ошибки 3: система не может найти указанный путь

Вопрос: Я пытаюсь навалом вставить локальный файл в удаленную базу данных MS_SQL, используя pyodbc. Я могу подключиться к БД, и я могу INSERT INTO таблицы INSERT INTO, как я это делал раньше. Там, где у меня возникли проблемы, это BULK INSERT. Я использую BULK INSERT как способ ускорить процесс INSERT. Код выглядит так: statement =

Вопрос:

Я пытаюсь навалом вставить локальный файл в удаленную базу данных MS_SQL, используя pyodbc. Я могу подключиться к БД, и я могу INSERT INTO таблицы INSERT INTO, как я это делал раньше. Там, где у меня возникли проблемы, это BULK INSERT.

Я использую BULK INSERT как способ ускорить процесс INSERT.

Код выглядит так:

statement = «»» BULK INSERT BulkTable FROM ‘C:\Users\userName\Desktop\Folder\Book1.csv’ WITH ( FIRSTROW=2, FIELDTERMINATOR=’,’, ROWTERMINATOR = ‘\n’ ); «»» cursor.execute(statement) cnxn.commit()

Этот код дает эту ошибку:

Traceback (most recent call last): File «tester.py», line 41, in <module> cursor.execute(statement) pyodbc.ProgrammingError: (‘42000’, ‘[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server] Cannot bulk load because the file «C:\Users\userName\Desktop \Folder\Book1.csv» could not be opened. Operating system error code 3(The system cannot find the path specified.). (4861) (SQLExecDirectW)’)’

Я действительно не понимаю, почему он не может открыть файл, поскольку путь определенно правильный.

Дайте мне знать, если вам нужна дополнительная информация.

Лучший ответ:

Msgstr “Я пытаюсь выполнить массовый ввод локального файла в удаленную базу данных MS_SQL”

Ваш подход не работает, потому что спецификация файла ‘C:\Users\userName\Desktop\Folder\Book1.csv’ – это только допустимый путь на рабочей станции, на которой запущен ваш код Python, но документа BULK INSERT объясняет, что

data_file должен указывать допустимый путь с сервера, на котором работает SQL Server. Если data_file – это удаленный файл, укажите имя универсальной именованной конвенции (UNC).

(акцент мой). То есть оператор BULK INSERT работает на сервере, поэтому спецификация файла на какой-либо другой машине (например, ваша рабочая станция) на самом деле является “удаленным файлом” в отношении сервера. Другими словами, SQL Server ищет файл с именем C:UsersuserNameDesktopFolderBook1 на самом сервере и, когда это не удается, возникает ошибка “не удается найти путь”.

Чтобы использовать BULK INSERT, вам необходимо либо

  1. поместите файл в общий сетевой ресурс, который SQL Server может “увидеть”, а затем укажите путь UNC к этому файлу или

  2. загрузите файл в локальную папку на SQL Server и затем укажите локальный (серверный) путь к файлу.

Если ни один из этих альтернатив невозможен, тогда ваш другой вариант из Python заключается в использовании модуля подпроцесса для вызова утилиты bcp SQL Server для загрузки данных из вашего локального файла в базу данных SQL Server.

Оцените статью
Добавить комментарий