将数据导入到ORACLE数据库中的一些注意问题

        我们在java web程序开发中,有时会遇到将另一台计算机ORACLE数据库中的数据导出DDL,然后在其他计算机的ORACLE数据库上运行此SQL语句,此时会出现很多问题,导致SQL语句执行失败。导致失败的主要原因有以下几点:

1. 两台计算机中ORACLE数据库的用户名不一致导致执行失败。因为从ORACLE数据库中导出数据时,会以SQL文件的形式导出,此SQL文件的建表语句中包含该数据库的用户名。假设该ORACLE数据库中持有该导出数据的用户为TEST_DBUSER,导出表为TEST_TABLE,则导出的SQL文件中的建表语句一定是这样的,

Create  table  “TEST_DBUSER” . ”TEST_TABLE”(  );

        在上述语句中可以看出,导出的DDL文件中,包含了持有该数据的用户。当另一台计算机的ORACLE执行该DDL文件时,由于两台计算机当前用户不一致,则执行肯定失败,因为找不到该用户。这种情况的解决方法是:

        因为ORACLE数据库执行DDL文件时,不需要在DDL文件中指定建表语句中包含的用户,所在在建表语句中将指定的用户名删掉即可。即删除上述语句中的“TEST_DBUSER” . ,此时的建表语句时这样的:

Create  table  ”TEST_TABLE”(  );

        2. 两台计算机中该数据的表空间不一致导致执行失败。从ORACLE数据库导出的DDL中,包含了持有该数据的变空间。假设该数据的表空间为 TEST_TAB,则该DDL文件的相关SQL语句一定指定了表空间TEST_TAB,如本例中,导出表TEST_TABLE 的完整DDL为:

create table “TEST_DBUSER”.”TEST_TABLE”

  (

“ID” VARCHAR(20 BETY),

”NAME” VARCHAR(30 BETY),

PASSWORD VARCHAR(32 BETY)

      )  SEGMENT CREATION DEFERRED

         PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255

         NOCOMPRESS LOGGING

         TABLESPACE “TEST_TAB”;

        在上述SQL语句中,黄色高亮显示的语句就指明了该DDL的表空间。基于这个原因,在其他计算机中执行该DDL时,由于两台计算机中ORACLE数据库的表空间不一致,则执行肯定会失败。解决方法为:

        在要导入该DDL的计算机的ORACLE数据库中,创建跟另一台计算机相同的表空间。并为当前用户指定该表空间。

 

        3. 如导出的DDL中有插入数据的SQL语句,则一定是这样的:

     Insert into TEST_DBUSER.TEST_TABLE(ID,NAME,PASSWORD) values(‘1001’,’张三’,’123456’);

        从上述语句可以看出,导出的DDL中指定了持有该导出数据的用户。如果两台计算机的用户名不一致,则执行该插入数据的语句时,一定会失败,找不到该用户。解决方法是:

        在导入DDL到数据库时,不需要指定用户,要删除该插入语句中的用户名,删除后的插入语句是这样的:

 Insert into TEST_TABLE(ID,NAME,PASSWORD) values (‘1001’,’张三’,’123456’);

猜你喜欢

转载自blog.csdn.net/weixin_38133660/article/details/80641220
今日推荐