bcp - экспортировать данные в файл со специальными (арабскими / юникодными) символами в имени файла - PullRequest
0 голосов
/ 05 августа 2020

Я не уверен, как правильно назвать это, поскольку я думаю, что проблема может заключаться в символах Unicode в именах файлов, указанных в queryout с помощью bcp в целом. Однако моя проблема связана с символами Arabi c.

Некоторое время назад я разработал сценарий для экспорта многих файлов, хранящихся в базе данных SQL Server, в организованную структуру папок с помощью утилиты bcp. Содержимое файла хранится в базе данных сервера SQL в столбце varbinary (MAX), а имя файла также сохраняется в базе данных. После некоторого использования я столкнулся с ошибкой, при которой файлы с символами Arabi c в имени файла не могли быть экспортированы со следующей ошибкой:

SQLState = S1000, NativeError = 0 Error = [Microsoft][ODBC Driver 13 for SQL Server]Unable to open BCP host data-file

Ниже приведен пример команды bcp, использованной в сценарии, в котором я получаю эту ошибку. Когда я меняю имя файла в конце параметра queryout на что-то без символов Arabi c, он работает нормально. Так что разрешения не проблема. Я довольно долго искал ответ на этот вопрос и обнаружил, что несколько человек сообщали о проблемах по этому поводу на форумах, но окончательных ответов не было. Большинство людей предлагают просто проверить разрешения. Кто-нибудь еще сталкивался с этой проблемой или нашел решение? На данный момент я подумываю изменить сценарий, чтобы вместо этого просто использовать решение. NET. Какое-то разочарование, если это единственное решение.

bcp "SELECT t.FileContent FROM dbo.Table1 t WHERE t.GUID = CAST('696e54f9-04fd-4e7e-9344-857889f19d8c' AS UNIQUEIDENTIFIER)" queryout 'E:\Archive\١٣١٥٢٤.png' -U "MyFakeUser" -P "MyFakePw" -S "server" -d "db" -f "C:\bcp\Format.fmt"
...