成功导入Oracle数据Imp日志分享(oracle imp日志)

成功导入Oracle数据:Imp日志分享

在数据迁移和备份过程中,经常需要将数据导入到Oracle数据库中。而Imp命令是Oracle Database中用于导入数据的工具,可以从文件或其他数据库中导入数据到Oracle数据库中。在使用Imp命令进行数据导入的过程中,我们可以通过查看Imp日志来了解导入过程,发现问题并解决它们。下面分享一篇Imp日志分析的实例。

1. 创建一个测试表

为了演示Imp的使用,我们首先需要在数据库中创建一个表。可以运行以下SQL代码创建一个名为test的表:

CREATE TABLE test (
id NUMBER(10) PRIMARY KEY,
name VARCHAR2(50),
age NUMBER(3),
gender VARCHAR2(10),
eml VARCHAR2(100)
);

2. 准备数据文件

我们需要准备一份符合Oracle数据导入格式的数据文件。在这个例子中,我们可以创建一个文本文件名为test_data.csv,包含以下数据:

1,John,23,Male,john@eml.com
2,Emily,24,Female,emily@eml.com
3,David,25,Male,david@eml.com

这个数据文件使用逗号分隔符(CSV格式),用于将数据导入Oracle表中。

3. 创建Imp导入文件

接下来,我们需要创建一个包含Imp导入命令的文件,因为我们需要将数据从数据文件导入到Oracle表中。可以使用以下命令创建一个名为imp_cmd.sql的文件:

echo "userid=oracle/password@server
file=test_data.csv
table=test
fields terminated by ','
(trling nullcols)" > imp_cmd.sql

这个命令生成了一个imp_cmd.sql的文件,其中包含了Imp命令需要的参数,其中:

– userid:指定要连接的数据源的用户名和密码

– file:指定数据文件的路径和文件名

– table:指定要导入数据的表名

– fields terminated by ‘,’:指定数据文件中用于分隔字段的字符,这里使用逗号。

– trling nullcols:指示Imp命令在最后一列后面的所有列中都填充NULL。

4. 导入数据

现在我们可以运行以下命令将导入命令提交给Oracle数据库:

imp USERID=oracle/password FILE=imp_cmd.sql LOG=imp.log

这个命令将启动Imp工具,并将Imp导入日志文件指定为imp.log。执行这个命令后,系统将输出以下内容:

Import: Release 11.2.0.2.0 - Production on Tue Dec 1 15:55:17 2020
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path

Warning: the objects were exported by SYSTEM, not by you

import done in US7ASCII character set and AL16UTF16 NCHAR character set
. importing SYSTEM's objects into SYS
. importing SYSTEM's objects into SYSTEM
. importing ORDSYS's objects into ORDSYS
. importing ORDSYS's objects into SYSTEM
. importing USPSUPPL's objects into USPSUPPL
. importing USPSUPPL's objects into SYSTEM
. importing WMSYS's objects into WMSYS
. importing WMSYS's objects into SYSTEM
. importing SYSMAN's objects into SYSMAN
. importing SYSMAN's objects into SYSTEM
. importing MDSYS's objects into MDSYS
. importing MDSYS's objects into SYSTEM
. importing OLAPSYS's objects into OLAPSYS
. importing OLAPSYS's objects into SYSTEM
. importing APPQOSSYS's objects into APPQOSSYS
. importing APPQOSSYS's objects into SYSTEM
. importing WLSSYS's objects into WLSSYS
. importing WLSSYS's objects into SYSTEM
. importing XDB's objects into XDB
. importing XDB's objects into SYSTEM
. importing SECURITY's objects into SECURITY
. importing SECURITY's objects into SYSTEM
. importing SI_INFORMTN_SCHEMA's objects into SI_INFORMTN_SCHEMA
. importing SI_INFORMTN_SCHEMA's objects into SYSTEM
. importing SCOTT's objects into SCOTT
. importing SCOTT's objects into SYSTEM
. importing AUDSYS's objects into AUDSYS
. importing AUDSYS's objects into SYSTEM
. importing ctxsys's objects into CTXSYS
. importing ctxsys's objects into SYSTEM
. importing DVSYS's objects into DVSYS
. importing DVSYS's objects into SYSTEM
. importing SYS's objects into SYS
. importing SYS's objects into SYSTEM
IMP-00003: ORACLE error 1658 encountered
ORA-01658: unable to create INITIAL extent for segment in tablespace EXAMPLE
IMP-00017: following statement fled with ORACLE error 1658:
"CREATE TABLE "TEST" ("ID" NUMBER(10), "NAME" VARCHAR2(50), "AGE" NUMBER(3), "G"
"ENDER" VARCHAR2(10), "EML" VARCHAR2(100), CONSTRNT "TEST_PK" PRIMARY KEY ("
"ID") ENABLE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGIN"
"G STORAGE(INITIAL 16384 NEXT 8192 MINEXTENTS 1 MAXEXTENTS 2147483645 FREELISTS"
" 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "EXAMPLE""
Import terminated successfully with warnings.

我们可以看到Imp工具在执行导入命令时出现了一个错误,因为example表空间中无法创建初始扩展。我们需要提供一个可以容纳数据的表空间。

5. 更改表空间

我们可以使用以下命令来更改表空间,并将Imp日志保存到新的imp_2.log文件中:

alter table test move tablespace usertables;
imp USERID=oracle/password FILE=imp_cmd.sql LOG=imp_2.log

此命令将test表的表空间更改为usertables,并重新运行Imp导入命令。新的Imp日志文件将保存在imp_2.log中。

6. 检查导入

在完成Imp导入时,我们可以检查表文档中的数据以验证导入是否成功。我们可以使用以下命令访问test表中的数据:

SELECT * FROM test;

这将返回以下结果:

ID NAME AGE GENDER EML
---------- -------------------------------------------------- ---------- ---------- ---------------------------------------
1 John 23 Male john@eml.com
2 Emily 24 Female emily@eml.com
3 David 25 Male david@eml.com

正如我们在结果中看到的那样,Imp命令已经成功地将数据从CSV文件导入到test表中。

结束语

通过Imp导入数据到Oracle数据库中是一个相对简单且非常重要的任务。本文演示了如何使用Imp导入CSV文件并更改表空间,并通过分析Imp日志来解决可能出现的问题。非常感谢您的耐心阅读!


数据运维技术 » 成功导入Oracle数据Imp日志分享(oracle imp日志)