我正在尝试将数据(使用sqlplus)从Oracle DB中提取到文件中,但由于该表的最后一列是默认的空字符串,如何处理它?</ p>
注意:我已经验证了Oracle DB中存在的第3列,如果最后一列不为空,则该脚本在其他表上正常工作,但对于最后一列空表,它失败了。
错误信息是:
[...@... scripts]$ ./myscript.sh
|| TRIM(THIRD_COLUMN) FROM TEST_TABLE
*
ERROR at line 3:
ORA-00942: table or view does not exist
相关的sqlplus如下:
My_Table="TEST_TABLE"
sqlplus -s ${USER}/${PASS}@${HOST} <<EOF
SET PAGESIZE 0
SET COLSEP "|"
...some SET here...
SPOOL $FILE
Select TRIM(FIRST_COLUMN)|| '|'
|| TRIM(SECOND_COLUMN)|| '|'
|| TRIM(THIRD_COLUMN) FROM $My_Table;
SPOOL OFF
EXIT
EOF
如何将最后一列与所有其他列一起拉,特别是当它是空字符串时?有人可以帮忙弄清楚,谢谢。
答案 0 :(得分:0)
错误表明问题不是列,而是您通过变量$My_Table
传递的表。你以错误的方式传递变量。请查看thread。
{b}中$My_Table
是可变的。当您运行脚本时,第一步是运行SQLplus,并且此变量不存在。
在你的情况下它应该是这样的:
./myscript.sh $My_Table $FILE
在您的脚本中使用&1
代替$My_Table
和&2
代替$FILE
如果您构建查询,那么您不需要SET COLSEP "|"
作为查询的结果就是单列,因此请使用COLSEP
或||
来连接所有cols