Отображение только фактических данных столбца в SQL * Plus - PullRequest
0 голосов
/ 20 декабря 2010

Я выписываю текстовые файлы с разделителями из SQL * Plus, но каждый столбец печатается как полный размер в соответствии с его определением, а не данные на самом деле в этой строке.

Например, определенный столбец10 символов со значением строки «test» выводятся как «test» вместо «test».Я могу подтвердить это, выбрав столбец вместе со значением его функции ДЛИНА.Он печатает "test | 4".

Он как бы побеждает цель разделителя, если он заставляет меня фиксированной ширины.Есть ли опция SET, которая исправит это, или каким-либо другим способом заставить его печатать только фактические данные столбца.

Я не хочу добавлять TRIM в каждый столбец, потому что если значение на самом деле сохранено с пробелами Я хочу, чтобы их можно было сохранить.

Спасибо

Ответы [ 2 ]

2 голосов
/ 20 декабря 2010

Я видел много сценариев SQL * plus, которые создают текстовые файлы, подобные этому:

select A || ';' || B || ';' || C || ';' || D
from T
where ...

Для меня это сильный признак того, что вы не можете просто переключиться на вывод переменной длины с Команда SET .

Вместо ';'Конечно, вы можете использовать любой другой разделитель.И ваш запрос должен правильно экранировать любые символы, которые могут быть перепутаны с разделителем или переводом строки.

0 голосов
/ 21 декабря 2010

Вообще, я бы забыл SQL Plus как метод для извлечения CSV из Oracle.

Том Кайт написал симпатичный маленький разгрузчик Pro-C

Лично я написал утилиту, которая делает подобное, но в perl

...