2010-11-11 3 views
10

У меня есть сценарий вроде этого:Максимальная ширина столбца в Oracle золотник в файл

SET ECHO OFF 
SET FEEDBACK OFF 
SET VERIFY OFF 
SET HEADING OFF 
SET TERMOUT OFF 
SET TRIMOUT ON 
SET TRIMSPOOL ON 
SET WRAP OFF 
SET LINESIZE 32000 
SET LONG 32000 
SET LONGCHUNKSIZE 32000 
SET SERVEROUT ON 

SPOOL C:\Export.txt 

SELECT XMLELEMENT("element1",xmlelement("element2",xmlattributes(.....))) 
    FROM --TABLENAME-- 
WHERE --CONDITIONS-- 

Вывод должен быть файл, содержащий список строк со сложной XML внутри, но когда длина XML генерируется длиннее 2000, SQLPlus обрезает до 2000 и переходит к следующей строке.

Есть ли способ заставить SQLPlus написать все данные в одной строке?

+1

Это должно быть в порядке. Что вы просматриваете в файле - имеет ли ваш редактор ограничение длины строки? Мне интересно, действительно ли катушка в порядке, но она просто выглядит усеченной, когда вы пытаетесь ее просмотреть. –

ответ

0

Как насчет использования getClobVal() для преобразования вывода в clob?

SELECT XMLELEMENT("element1",xmlelement("element2",xmlattributes(.....))).getClobVal() 
    FROM --TABLENAME-- 
WHERE --CONDITIONS-- 
5

Просто добавьте следующую строку сразу после команды SET:

COL ColumnName FORMAT A32000 

где ColumnName это псевдоним для столбца XML в вашем ЗЕЬЕСТЕ (вам нужно добавить псевдоним).

Это устанавливает максимальную ширину для этого столбца, которая по умолчанию равна 2000 символам. Обратите внимание, что, хотя вы можете установить COL FORMAT как 60000 символов, наиболее вероятно, что вы на самом деле когда-либо попадете на одну строку с sqlplus, это , так как это верхний предел для LINESIZE.

+0

Это очень полезно, когда вы выполняете сценарий DDL с использованием 'DBMS_METADATA.GET_DDL()'] (http://dba.stackexchange.com/a/19506/2660). –

2

Вы в Windows? У меня была такая же проблема, и ни один из двух ответов не помог мне (прямо, я должен был сделать еще одну вещь). По совету this article on setting up SQL*Plus for Windows автор отмечает:

[Note3] Set long big_number так что вы можете увидеть определение сложного триггера или представлений, или текста в любом длинном или CLOB колонка.

Я установил для себя как SET LONG 32000 (моя самая длинная линия была чуть более 2000 символов), и это решило проблему для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^