Столбец «Экспорт изображения» из SQL Server 2000 с использованием BCP - PullRequest
2 голосов
/ 29 сентября 2011

Мне было поручено извлечь некоторые данные из базы данных SQL Server 2000 в плоский формат на диске. У меня мало опыта работы с SQL Server.

Существует таблица, которая содержит файлы, хранящиеся в столбце типа «ИЗОБРАЖЕНИЕ», вместе со столбцом nvarchar, хранящим имя файла.

Похоже, в таблице хранится множество типов файлов: документы Word, XLS, TIF, txt, zip-файлы и т. Д.

Я пытаюсь извлечь только одну строку, используя BCP, делая что-то вроде этого:

bcp "select file from attachments where id = 1234" queryout "c:\myfile.doc" -S <host> -T -n

Это сохраняет файл, но он поврежден, и я не могу открыть его с помощью Word. Когда я открываю файл словом, я вижу много текста, но я также получаю много неперерисовываемых символов. У меня похожие проблемы при попытке извлечь файлы изображений, например, TIF. Программа для работы с фотографиями не открывает файлы.

Полагаю, у меня проблемы с кодировкой символов.

Я играл с опциями -C (например, RAW) и -n в BCP, но все еще не могу заставить его работать.

Таблица в SQL Serer имеет параметры сортировки «SQL_Latin1_General_CP1_CI_AS»

Я запускаю BCP удаленно с моего рабочего стола Windows 7.

Есть идеи, где я иду не так? Любая помощь с благодарностью.

Ответы [ 2 ]

5 голосов
/ 29 сентября 2011

Я получил эту работу, изменив параметры по умолчанию, о которых BCP запрашивает при вызове команды:

BCP prompts

Единственное, что имело значение, - это изменение длины префиксаполе от 4 до 0.

0 голосов
/ 10 января 2013

bcp "выбрать файл из вложений, где id = 1234" queryout "c: \ myfile.doc" -S -T -n

после этого [изображение]: я (введите заглавную букву "я"] 0 0 Войти сохранить файл Y

Каллас .. Ваш файл там

...