Копирование большого поля (varbinary (max)) в файл/буфер обмена
У меня есть поле VARBINARY (MAX) в таблице базы данных, которая содержит ~ 35 тыс. символов. Это поле является преобразованным документом, который, к сожалению, больше не имеет доступа.
Это поле присутствует в моей базе данных dev, и я ищу перенос этого значения в базу данных в реальном времени. Однако, если я чисто выбираю содержимое из результатов сетки в SQL, я, кажется, получаю ~ 28 тыс. Доступных символов.
Итак, мой вопрос в том, что лучший способ перенести поле, содержимое которого слишком велико, чтобы просто скопировать и вставить и вставить script?
Любые мысли получили высокую оценку.
ИЗМЕНИТЬ:
Как дополнительная информация, вывод результатов в файл (хотя и в .txt), похоже, дает мне меньше символов, чем через сетку. Если я экспортирую результаты запроса в файл после запуска запроса в сетку, я, похоже, получаю буквальное представление того, что в окне запроса в то время (поэтому, если я растягиваю окно, я получаю больше символов, чем если бы я сжимал ширину столбца)/p >
Ответы
Ответ 1
Чтобы надежно скопировать большие строки из панели результатов запроса SSMS, вы хотите обратить пристальное внимание на следующие настройки (сейчас я смотрю SSMS 10.50.2500.0):
Tools > Options > Query Results > SQL Server > Results to Grid
Max chars retreived:
Non-XML: 65535
XML: Unlimited
Tools > Options > Query Results > SQL Server > Results to Text
Max chars displayed:
8192
Вам может потребоваться хотя бы открыть новое окно запроса для применяемых параметров. Обратите внимание: поскольку XML неограничен, вы можете потенциально использовать XML для получения полных результатов. В этом случае вы можете сделать следующее:
select cast(convert(varchar(max), MyColumn, 1) as xml) -- Use style 1 to get "0x..."
Все, что сказано, могут быть лучше (и автоматизированы/воспроизводимые) методы для перемещения данных вокруг ваших систем, как упомянули другие:
- Установите связанный сервер, чтобы просто запустить оператор insert
- Используйте openrowset для запроса удаленного сервера.
- SSMS: экспорт данных, создание сценариев, результатов в файл
- SSIS
- Сторонние инструменты (Redgate Data Compare и т.д.)
Ответ 2
Надстройка SSMSBoost для SSMS, которую я разрабатываю, имеет 2 функции, которые могут вам помочь:
Ответ 3
Вы можете просто экспортировать (Сохранить как) ваши результаты в csv.
1) Запустите запрос в SSMS
2) Результаты отображаются в формате сетки
3) Щелкните правой кнопкой мыши на сетке и выберите Сохранить результаты как
4) Выберите формат csv или текстового файла
5) Сохраните результаты в файл
Таким образом, будут экспортированы все данные, и оттуда вы можете выбрать весь текст, который вы хотите.
Примечание. Эти шаги были выполнены с использованием SSMS 2012, но должны быть одинаковыми или похожими для 2008 и других инструментов управления базами данных.
Ответ 4
Пропустить сетку
В результатах запроса SSMS в файл
Запустите запрос
Или почему вы не использовали связанный сервер для непосредственного вставки
Я тестировал и сохраняю в файл, обрезает.
Можете ли вы использовать .NET с DataReader и .GetBinary?