Sybase ASE 12.0 CSV Table Export - PullRequest
       18

Sybase ASE 12.0 CSV Table Export

1 голос
/ 01 марта 2011

Я пытаюсь экспортировать представление / таблицу из Sybase ASE 12.0 в файл CSV, но у меня много трудностей с этим.

Мы хотим импортировать его в ИДЕЯ или MS-Access.Эти программы работают с символом инкапсуляции текстового поля и символом разделителя полей, а новые строки являются разделителем записей (без возможности изменить это).

Хорошо, используя bcp дляэкспорт в конечном итоге бесплоден с его встроенными опциями.Он не позволяет вам определять символ инкапсуляции текстового поля (насколько я могу судить).Поэтому мы попытались создать другое представление, которое будет считывать данные из другого представления / таблицы, объединяющего поля с новыми строками в них (text поля), однако вы не сможете сделать это, не потеряв часть точности, потому что она вызывает полев varchar из 8000 символов / байтов, из которых используемое нами максимальное поле равно 16000 (так что определенно есть некоторое усечение).

Итак, мы решили создать столбцы в новом представлении, которые имели разделители текстовых полей,Тем не менее, это означает, что наш счетчик столбцов для представления на 320 - 70 больше, чем ограничение в 250 столбцов в ASE 12.0.

bcp может работать только с существующими таблицами и представлениями, так что мы можем сделать, чтобы экспортировать эти данные?Мы в значительной степени открыты для всего.

Ответы [ 3 ]

1 голос
/ 01 марта 2011

Если только новый линейный символ вызывает проблемы, вы не можете просто заменить

create new view as
select field1, field2, replace(text_field_with_char, 'new line char,' ' ')
from old_view

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

0 голосов
/ 06 марта 2015

Для этого вы можете использовать файлы формата BCP.

bcp .... -f XXXX.fmt

BCP также может создавать файлы этого формата в интерактивном режиме, если вы не укажете любой из флагов -c -n -f. Затем вы можете сохранить файл формата и поэкспериментировать с ним, отредактировать его и запустить BCP. Чтобы сэкономить время при экспорте и отладке, используйте флаги -F -L, такие как "-F 1 -L 10" - получаются только первые 10 строк.

0 голосов
/ 09 марта 2011

Звучит как bcp правильно, но обрабатывает вывод через awk или perl.Но есть ли эти вещи, которые вы имеете и знаете?Это может быть немного накладно для вас.Если вы работаете в Windows, вы можете получить Active Perl бесплатно, и это может быть быстро.

что-то вроде:

perl -F, -lane 'print "\" $ F [0] \", $ F [1], \" $ F [2] \ ", $ F [3] \ n"; 'bcp-output-file

как это?$ F - это массив полей.Текст, который вы окружаете \ "

...