2013-12-23 5 views
1

Я пытаюсь создать файл данных как downlaod таблицы, что возможно в фиксированном формате. У меня уже есть SQL.Дополнительные пространства, добавляемые в Spooling SQL-скрипт в UNIX

Пример:

SELECT RPAD(ORGANIZATION_ID,10)||RPAD(ORGANIZATION_NAME,100)||RPAD(EMPLOYEE_COUNT,100) 
FROM MY_ORGANIZATION_STATE; 

я запустить его в SQL Developer, а также экспортировать в Excel. для образца из 50 записей. Я могу получить выбор правильно, и формат выглядит нормально.

Но мне нужно его автоматизировать, и поэтому мы используем команду spool SQL * Plus. Ниже приведен фрагмент.

set pagesize 100; 
set linesize 10000; 
set heading off; 
spool orgn_output.dat; 
@my_script # this has my SQL inside 
spool off; 

Это работает без ошибок.

Но когда я попытался открыть файл, я мог видеть, дополнительные пробелы внутри файла, а макет не так, как я ожидал!

Когда я запускаю SQL вручную и spool using PUTTY, он ищет файл. Почему мой скрипт генерирует неправильный. Я понятия не имею, почему это происходит.

Любая помощь с благодарностью!

EDIT: Выход:

100   [email protected]@Sales   469 
101   [email protected]     234 
102   [email protected]    245 
103   [email protected]@Finance  469 

Благодаря

+0

Собственно, выдача команды cut -c в unix, ясно показывает, что макет неправильный. –

+0

Я попробовал самостоятельно с примером! –

+1

Дополнительные пробелы в конце каждой строки или между значениями? «Заблокировать вкладку» влияет на то, что вы видите? Это может привести к тому, что часть выравнивания исчезнет. Если строки слишком длинны, вам может понадобиться 'set trimspool on', но я не уверен, что это актуально? –

ответ

2

На самом деле, я могу воссоздать проблему легко. Это происходит, когда текст столбца меньше. когда я выдаю точный размер текста, макет - это размер, и я вижу, что текст внутри буферизованного текста имеет символы табуляции, а не пробелы. Шаблон тоже несовместим. Я только что исследовал с помощью доступной команды, и я нашел. SET TAB OFF; в sqlplus решает это.

Я надеюсь, что sqlplus сам меняет несколько пространств внутри в TAB. Настройка TAB решила это.!

Пожалуйста, попробуйте этот вариант. и дайте мне знать. Удачи!

P.S. Редактирование вашего вопроса, выявил ошибку, возможно, SO, эффективно конвертирует TAB во время форматирования :)

+0

Вы правы! U ребята потрясающие .. Я много боролся с этим вопросом .. Был ли анализ вопросов, связанных с UNICODe! –

+2

@DevarajMahesan - документация SQL * Plus содержит различные разделы о форматировании; включая поведение ['set tab'] (http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve040.htm#i2683445). Помогает, если вы уже знаете, что вы ищете, конечно * 8-) –

+1

Devaraj - не уверен, что конечные пробелы также являются проблемой, но если это так, вы также должны «SET TRIMSPOOL ON». –

0

На самом деле у меня такая проблема с sqlplus. После того, как я исправил его, я хотел бы порекомендовать вам попробовать в этом формате sqlplus.

  1. SET TRIMSPOOL ON;
  2. SET TAB OFF;

Из-за ошибки, потому что речь идет о проблеме с катушкой. Поэтому мы просто принимаем формат trimspool on.

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

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