Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 735|回复: 0

解决方案 -SQL脚本建表产生ORA-00942错误

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-11 11:59:28 | 显示全部楼层 |阅读模式

    一、问题简介

    1、开发环境

          操作系统:win10

          数 据 库:Oracle11g

          数据库连接工具:Navicat  Premium

    2、问题简述

           在使用SQL Development、Navicat  Premium、powerdesigner生成SQL脚本 或 使用Navicat  Premium的“数据传输”功能,将旧的数据库复制到Oracle数据库后,再使用select查询语句查询表中记录会出错。

         image

    二、问题解决方案

    1、原因分析

         Oracle数据库的语法是大小写敏感的,通过SQL语句创建表时,会自动将表名转换成大写。但是如果表名或字段名加上""后,Oracle不会将双引号内的表名变成大写。通过数据库连接工具、数据传输功能生成的SQL语句中的表名生成都带有双引号。

                                        image

           在Oracle数据库执行这种语句后,表名就变成了【表名加双引号】的方式。我们可以通过表名加双引号的方式来查询表。

      1 select * from "emp"

    运行结果如下:

             image

    2、更改表名和别名

      1 --修改表名
      2 --方法一:ALTER TABLE "emp"  RENAME TO emp;
      3 --方法二:create emp as select * from "emp";
      4 --方法三:使用rename方法,但只能修改当前用户下的表
      5 rename "emp" to emp;
      6 rename "dept" to dept;
      7 rename "SALGRADE" to SALGRADE;
      8 rename "sysdiagrams" to sysdiagrams;
      9 
     10 --修改字段名
     11 alter table dept rename column "deptno" to deptno;
     12 alter table dept rename column "dname" to dname;
     13 alter table dept rename column "loc" to loc;
     14 
     15  --测试程序
     16 select * from emp;
     17 select * from dept;
     18 select * from SALGRADE;
     19 select * from sysdiagrams;
     20 
     21 select * from dept  where deptno = 10

    3、Navicat  Premium解决办法

           使用Navicat  Premium进行数据传输,把其他数据库中的数据传输到Oracle数据库时,需要在【高级】选项卡中勾选【转换对象名为大写】才可。

         搜狗截图20180125113829   搜狗截图20180125113803

    4、PowerDesigner解决办法

    (1)修改Naming Convention配置

        在[Tools->Model Options->Naming Convention]中,把Name和Code的Charcter case属性设成Uppercase(只要不是混合模式即可)。

                            image

    (2)修改CaseSensitivityUsingQuote配置

          在【Database->Edit current database->Script->Sql->Format】下将CaseSensitivityUsingQuote的comment为“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”即可!

                image

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 08:51 , Processed in 0.062520 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表