使用 sqlplus 将 Oracle 数据库中的数据拉入文件必须提供模式名称

Pull data from Oracle DB into file with sqlplus must provide schema name

我试图从 Oracle 数据库中提取数据(使用 sqlplus)到一个文件中,但是 table 的最后一列默认为空字符串,如何处理它?

注意:我已经验证了 Oracle 数据库中存在的第 3 列,如果最后一列不为空,脚本在其他 table 上工作正常,但对于最后一列为空 table,它失败了.

错误信息为:

[...@... 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

如何将最后一列与所有其他列放在一起,尤其是当它是空字符串时?谁能帮忙解答下,谢谢

错误表明问题不在于列,而是 table 您正在通过变量 $My_Table 传递。你以错误的方式传递变量。请看一下 thread
$My_Table 在 bash 中是可变的。当您 运行 脚本第一步是 运行ning SQLplus 并且该变量不存在。

在你的情况下应该是这样的:

./myscript.sh $My_Table $FILE

并且在您的脚本中使用 &1 代替 $My_Table 并使用 &2 代替 $FILE

并且如果您像这样构建查询,则不需要 SET COLSEP "|",因为您的查询结果是单列,因此请使用 COLSEP|| 连接所有列