使用 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
或 ||
连接所有列
我试图从 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
或 ||
连接所有列