将表从转储文件导入Oracle数据库时遇到问题
这是我第一次使用转储文件,我在这方面非常初学者 所以, 我有包含表的转储文件,需要将这些表导入Oracle数据库 以下是我的客户端生成转储文件的方式:将表从转储文件导入Oracle数据库时遇到问题,oracle,dump,impdp,Oracle,Dump,Impdp,这是我第一次使用转储文件,我在这方面非常初学者 所以, 我有包含表的转储文件,需要将这些表导入Oracle数据库 以下是我的客户端生成转储文件的方式: 有几个类别(比如人力资源、财务、销售等),对于每个类别,他都进行SQL查询(其中每个查询都与一个表相关)。让我们用一个我们称之为A的类别继续推理 对于A类别,他为所有查询的结果生成转储文件。所以我们有类似的东西: A类: 表1 表2 表3 表4 生成的转储文件(dmp文件的数量取决于数据的大小): 分类a_01.dmp 类别a_02
- 有几个类别(比如人力资源、财务、销售等),对于每个类别,他都进行SQL查询(其中每个查询都与一个表相关)。让我们用一个我们称之为A的类别继续推理
- 对于A类别,他为所有查询的结果生成转储文件。所以我们有类似的东西:
A类:
- 表1
- 表2
- 表3
- 表4
- 分类a_01.dmp
- 类别a_02.dmp
- 分类a_03.dmp
- 类别a_04.dmp
- 分类a_05.dmp
C:\"path">sqlplus / as sysdba
SQL> alter session set "_ORACLE_SCRIPT"=true;
SQL> Grant dba to my_user;
SQL> CREATE DIRECTORY Dir_Name AS 'G:\Dir_Name'; -- This is where I copied all the dmp files and the logs
通常我需要创建一个表空间,但根据我掌握的信息,我在任何地方都找不到需要导入的表的表空间名称,因此,我要做的是编写import语句行,等待它返回错误,指出它找不到表空间“X”,然后创建表空间“X”,并重复import语句行,如下所示(如果您知道我如何在不进行创建的情况下找到需要创建的表空间的名称,请告诉我):
在这之后,我得到了两个病例结果:
ORA-12899:列COL_1的值太大(实际值:19,最大值:18) 因此,这里我要做的是返回到sql developer并删除(与下面的#b链接)使用缺少的数据创建的表_1,并在提示符命令中执行以下操作: 步骤1:我只导入元数据:
C:\> impdp my_user/pswd DIRECTORY=Dir_Name DUMPFILE=CategorieA_.%U.dmp CONTENT=METADATA_ONLY TABLES=SYSADM.table_1 LOGFILE=file_name
步骤2:然后返回sql developer以扩展列的大小:
步骤3:然后返回命令提示符仅导入数据:
impdp my_user/pswd DIRECTORY=Dir_Name DUMPFILE=CategorieA_.%U.dmp CONTENT=DATA_ONLY TABLES=SYSADM.table_1 LOGFILE=file_name
在这里,如果您对如何导入表而不获取此列大小错误消息有任何建议,那就太好了
到目前为止,没有任何阻碍,我总能找到办法继续前进,即使这需要花费太多的时间
现在,当我这样做时,我还收到了两个案例:
提前感谢此错误是由导出数据的数据库的字符集与您的数据库不匹配引起的 ORA-02374:加载表“SYSADM”“表1”时发生转换错误 处理这一问题的一种方法是:
sqlfile
参数,例如sqlfile=Dir\u Name:CategorieA\u 01.dmp
。事实上,您有这么多转储文件显然意味着这一步可能有点恶心;也许您可以在这里使用通配符-我不知道,我从未尝试过如果您经常与此客户打交道,您建议他们以更合理的方式进行导出。可能每个表有一个文件,也可能只有一个文件。所有这些不利于任何人。此错误是由于导出数据的数据库的字符集与您的数据库不匹配造成的 ORA-02374:加载表“SYSADM”“表1”时发生转换错误 处理这一问题的一种方法是:
sqlfile
参数,例如sqlfile=Dir\u Name:CategorieA\u 01.dmp
。事实上,您有这么多转储文件显然意味着这一步可能有点恶心;也许您可以在这里使用通配符-我不知道,我从未尝试过alter table Table_1 modify (COL_1 VARCHAR2(50));
impdp my_user/pswd DIRECTORY=Dir_Name DUMPFILE=CategorieA_.%U.dmp CONTENT=DATA_ONLY TABLES=SYSADM.table_1 LOGFILE=file_name