在shell脚本中使用sqlplus格式化csv文件
我在shell脚本中使用sqlplus连接到DB和spool.csv文件 代码是:-在shell脚本中使用sqlplus格式化csv文件,sql,oracle,Sql,Oracle,我在shell脚本中使用sqlplus连接到DB和spool.csv文件 代码是:- sqlplus -s user/pass@db <<EOF> /dev/null 2>&1 SET COLSEP ',' SET FEEDBACK OFF SET TRIMSPOOL ON SET UNDERLINE OFF SET LINESIZE 10000 SET PAGESIZE 10000 spool customer.csv select * from cust
sqlplus -s user/pass@db <<EOF> /dev/null 2>&1
SET COLSEP ','
SET FEEDBACK OFF
SET TRIMSPOOL ON
SET UNDERLINE OFF
SET LINESIZE 10000
SET PAGESIZE 10000
spool customer.csv
select * from customer where cust_name='john';
spool off
EOF
输出:-
我得到了我的头球修剪像第一,第二,第四和第七列
预期产出:-
您需要告诉SQL*以及您希望列的宽度。假设我正确计算了每个标题的长度
column sys_creation_date format a17
column sys_update_date format a15
column dl_service format a10
column eff_date_time format a13
不过,您可能更乐意切换到SQLcl,因为这样会更容易。只是
select /*csv*/ * from emp
或
您需要告诉SQL*以及您希望列的宽度。假设我正确计算了每个标题的长度
column sys_creation_date format a17
column sys_update_date format a15
column dl_service format a10
column eff_date_time format a13
不过,您可能更乐意切换到SQLcl,因为这样会更容易。只是
select /*csv*/ * from emp
或
我们有任何选项可以设置所有列的格式吗?这里…设置格式只有在列数较少时才有帮助,如果我们有50-70列,那么这不是一个好主意。@罗杰-如果您使用的是SQL*Plus,并且希望确保列标题完全打印出来,则需要设置列的格式。是的,如果您的查询有70列,那么可能有70行格式。这就是为什么SQLcl通常是更好的选择,除非您出于某种原因与旧工具结合在一起。@JustinCave-sqlcli不需要使用/*csv*/指令。sqlplus至少在19c上也能处理它。@EdStevens-很有趣。我知道SQLDeveloper和SQLcl支持这一点。我不知道它已添加到SQL*Plus中。我们是否有任何选项来设置所有列的格式?这里…设置格式只有在列数较少时才有帮助,如果我们有50-70列,那么这不是一个好主意。@Roger-如果您使用SQL*Plus,并且希望确保列标题完全打印出来,您需要设置列的格式。是的,如果您的查询有70列,那么可能有70行格式。这就是为什么SQLcl通常是更好的选择,除非您出于某种原因与旧工具结合在一起。@JustinCave-sqlcli不需要使用/*csv*/指令。sqlplus至少在19c上也能处理它。@EdStevens-很有趣。我知道SQLDeveloper和SQLcl支持这一点。不知道它已添加到SQL*Plus。