Мне нужно форматировать выходной файл csv из запроса sqlplus. Поля вывода char и varchar выводятся в максимальном размере столбца в таблице, что означает, что у большого количества столбцов есть дополнительные пробелы, а также разделитель запятой. Как я могу избавиться от лишних пробелов в моем файле csv? Также как я могу получить «вокруг» числовых полей?Формат вывода csv из sqlplus выполняется в сценарии Unix
0
A
ответ
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
Обратите внимание, что то, о чем вы просите здесь, но хорошее начало было бы включать некоторые фрагменты ввода образца. Переход от ввода к выходу в текстовом потоке обычно подразумевает некоторое интересное использование sed или awk. Но нам нужно увидеть образец того, что генерирует sqlplus и что вы хотите в выходе. Похоже, хорошая работа для sed, awk или perl. –