成功导入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.com3,David,25,Male,david@eml.com
这个数据文件使用逗号分隔符(CSV格式),用于将数据导入Oracle表中。
3. 创建Imp导入文件
接下来,我们需要创建一个包含Imp导入命令的文件,因为我们需要将数据从数据文件导入到Oracle表中。可以使用以下命令创建一个名为imp_cmd.sql的文件:
echo "userid=oracle/password@server
file=test_data.csvtable=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 ProductionWith 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 SYSTEMIMP-00003: ORACLE error 1658 encountered
ORA-01658: unable to create INITIAL extent for segment in tablespace EXAMPLEIMP-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.com3 David 25 Male david@eml.com
正如我们在结果中看到的那样,Imp命令已经成功地将数据从CSV文件导入到test表中。
结束语
通过Imp导入数据到Oracle数据库中是一个相对简单且非常重要的任务。本文演示了如何使用Imp导入CSV文件并更改表空间,并通过分析Imp日志来解决可能出现的问题。非常感谢您的耐心阅读!