sql - 尝试在 Linux 中通过 shell 脚本向 oracle 数据库表插入记录时出错
问题描述
当我尝试运行参数为 20211007 的 shell 脚本 test.sh 时,谁能帮我解决这个错误代码如下:
#!/bin/sh
ODATE=${1}
file_source_sys="abc"
File_name="xyz"
file_deliver_time="20210218:12:56:76"
HOME_DIR="/var/tmp/Sneha"
source ~/env/INFORMATICA.env
source ${HOME_DIR}/db.properties
cd ${HOME_DIR}
cat <<EOD > temp.sql
INSERT INTO test VALUES
('${file_source_sys}','${File_name}','${file_deliver_time}','$ODATE');
commit;
quit
EOD
sql ${USER}/\"${PASS}\"@${DB_INSTANCE} @temp.sql
错误如下:
SQLcl:2021 年 11 月 6 日星期六 18:53:24 发布 18.3 生产版 版权所有 (c) 1982, 2021,Oracle。版权所有。
上次成功登录时间:Sat Nov 06 2021 18:53:25 +01:00
连接到:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.11.0.0.0
从行开始的错误:1 File @ /var/tmp/Sneha/temp.sql 在命令中 - INSERT INTO test VALUES ('abc','xyz','20210218:12:56:76','20211005') 错误命令行:1 列:13 文件@/var/tmp/Sneha/temp.sql 错误报告 - SQL 错误:ORA-00942:表或视图不存在
提交完成。
从 Oracle Database 19c 企业版版本 19.0.0.0.0 断开 - 生产版本 19.11.0.0.0
注意我仔细检查并确认表 test 是在 DB 中创建的。此外,我手动检查了将生成的插入语句插入到数据库中,它工作正常。但是通过 Shell 脚本它没有发生。
我还看到 temp.sql 文件是用以下内容生成的:
插入测试值('abc','xyz','20210218:12:56:76','20211005');
犯罪;
退出
我不确定代码哪里出错了,因为我可以看到脚本成功连接到数据库,并且也正确地进行了提交和断开连接。
非常感谢您的帮助。非常感谢
解决方案
你确定你连接到正确的数据库,它说表'test'不存在,尝试这样做:
INSERT INTO DB_NAME.test VALUES (...);
推荐阅读
- excel - Excel VBA:满足条件时将列复制到另一个工作表
- javascript - 如何在 Javascript Laravel 上编写资产 URL
- sql - 如何在 Oracle 中使用 LOOP 引用动态变量
- pytorch - 张量板不一致的折线图颜色
- swift - Swift Combine - 如何抛出错误并停止执行
- r - ggstatsplot::ggbetweenstats: 显示真实的 p 值
- debugging - 如何在没有客户提供的任何可执行文件的情况下调试核心文件
- database - SpringBoot中数据实体的异常类:全局异常类还是每个实体单独的异常类?
- django - 授权和获取访问令牌后如何将用户传回前端客户端?
- swift - Swift 5 中的日期格式