2009-11-09 3 views
0

Мне нужно форматировать выходной файл csv из запроса sqlplus. Поля вывода char и varchar выводятся в максимальном размере столбца в таблице, что означает, что у большого количества столбцов есть дополнительные пробелы, а также разделитель запятой. Как я могу избавиться от лишних пробелов в моем файле csv? Также как я могу получить «вокруг» числовых полей?Формат вывода csv из sqlplus выполняется в сценарии Unix

+0

Обратите внимание, что то, о чем вы просите здесь, но хорошее начало было бы включать некоторые фрагменты ввода образца. Переход от ввода к выходу в текстовом потоке обычно подразумевает некоторое интересное использование sed или awk. Но нам нужно увидеть образец того, что генерирует sqlplus и что вы хотите в выходе. Похоже, хорошая работа для sed, awk или perl. –

ответ

0

Вы можете избавиться от ведущих/замыкающие пробелы, используя декоративную функцию:

http://www.adp-gmbh.ch/ora/sql/trim.html

SELECT TRIM(col) FROM table; 

Не уверен, почему вы получаете кавычки числовых полей: вероятно, что-то делать с тем, как вы объединяющие столбцы?

Как спросил Д.Шаули - это поможет, если вы можете разместить пример SQL, который вы используете для создания своего CSV здесь.

2

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

SELECT '"' || numcol || '",', 
     '"' || REPLACE(strcol0, '"', '""') || '",', 
     '"' || REPLACE(strcol1, '"', '""') || '"' 
    FROM some_table; 

Прежде, чем вы запустите это, вы, вероятно, захотите отключить заголовки и обратную связь, а затем спутать в файл.

SQL> set heading off 
SQL> set feedback off 
SQL> set pagesize 0 
SQL> spool output.csv 
SQL> SELECT ... FROM ...; 
SQL> spool off