数据库必备技能之imp命令详解 (数据库命令imp)

导入数据是数据库管理中必不可少的过程,通常情况下,我们使用Oracle数据库来管理各种各样的数据。Oracle数据库有很多命令可以用来导入和导出数据,其中最常用的就是imp和exp命令。在本文中,我们将会详细讨论imp命令,包括什么是imp命令、它的工作原理、如何使用以及一些实例操作等。

什么是imp命令?

imp命令是Oracle数据库中的一个命令行工具,它可以用来导入数据到数据库中。在导入数据的过程中,imp命令可以将数据从一个二进制文件中读取,然后将其插入到目标数据库表中。imp命令的功能非常强大,它可以让我们从多种来源导入多种数据类型、格式以及大小的数据。因此,在数据库管理中,imp命令也是一个必不可少的工具。

imp命令的工作原理

imp命令是通过读取一个数据文件来将数据插入数据库表的。在导入数据之前,我们必须先创建一个目标表来存储我们将要导入的数据。目标表应该已经定义好,并且必须与我们要导入的数据具有相同的结构和字段名称。如果目标表中已经有了数据,那么导入的数据将会覆盖原有的数据。另外,在导入数据之前,我们还可以设置一些参数以控制数据导入的过程,这些参数可以控制一些特定的行为以及数据的格式化等。

如何使用imp命令?

使用imp命令之前,我们需要先连接到管理员权限下的数据库。我们需要启动命令行并输入以下命令:

imp userid=username/password

这个命令会启动imp命令行工具,并以用户名和密码登录到数据库中。在登录之后,我们就可以开始使用imp命令来导入数据了。下面将详细介绍一些常用的imp命令参数:

1. FROMUSER:指定数据的来源用户名。

2. TOUSER:指定数据导入到的目标用户名。

3. FILE:指定要导入的数据文件,可以是dump文件或SQL文件。

4. TABLES:指定要导入的数据表。

5. INDEXES:导入表时,同时导入表的索引。

6. CONSTRNTS:导入表时,同时导入表的约束。

7. ROWS:导入表时,同时导入表的行。

8. IGNORE:如果表已存在,忽略。

9. GRANTS:导入表时,同时导入表的权限。

10. LOG:记录导入的过程,并将过程中的错误信息写入到指定的日志文件中。

11. FULL:导入时,将所有相应的表空间信息也一并导入。

下面是一些常用的imp命令的示例:

1. 导入整个数据库:

imp userid=sys/sys file=myexport.dmp full=y

以上命令将整个数据库导入到myexport.dmp文件中,并将所有的表空间信息都一并导入。

2. 导入单个表:

imp userid=sys/sys file=myexport.dmp tables=employees

以上命令将从myexport.dmp文件中导入employees表。

3. 导入一段SQL代码:

imp userid=sys/sys file=myexport.sql ignore=y

以上命令将从myexport.sql文件中导入SQL语句,并忽略重复操作。

结论

在本文中,我们已经详细地介绍了imp命令的工作原理、如何使用以及一些实例操作。imp命令是Oracle数据库中非常重要的工具,它可以帮助我们快速、准确地将数据从一个文件中导入到数据库表中。当我们面临大批量数据导入的任务时,使用imp命令可以大大提高我们的工作效率。所以,数据库管理人员应该掌握这个命令,并在必要时灵活运用它。

相关问题拓展阅读:

exp和imp用法和介绍

Export/Import的用处    Oracle Export/Import工具用于在数据库之间传递数据     Export从数据库中导出数据到dump文件中    Import从dump文件中到入数据导数据库中    下面是一般使用他们的情芦晌况    ( ) 两个数据库之间传送数据    同一个版本的oracle Server之间    不同版本的oracle Server之间    同种OS之间    不同种OS之间    ( ) 用于数据库的备份和恢复    ( ) 从一个SCHEMA传送到另一个SCHEMA    ( ) 从一个TABLESPACE传送到另一个TABLESPACE     DUMP文件    EXPORT到出的是二进制格式的文件 不可以手工编辑 否则会损坏数据     该文件在ORACLE支持的任何平台上都是一样的格式 可以在各平台上通用     DUMP文件在IMPORT时采用向上兼容方式 就是说ORALCE 的纳哗毕DUMP文件可以导入    到ORACLE 中 但是版本相差很大的版本之间可能有问题      EXPORT/IMPORT过程    EXPORT导出的DUMP文件包含两种基本类型的数据   DDL (Data Dictionary Language)   Data    DUMP文件包含所有重新创建Data Dictionary的DDL语句 基本上是可以读的格式     但是应该注意的是 千万不要用文本编辑器编辑之 oracle说不支持这样做的     下面列出的是DUMP文件中包括的ORACLE对象 分为TABLE/USER/FULL方式 有些对象    只是在FULL方式下才有(比如public synonyms users roles rollback segments等)    Table modeUser ModeFull Database ModeTable definitions    Table definitions    Table definitions  Table dataTable dataTable data  Owner s table grants  Owner s grants     Grants  Owner s table indexes  Owner s indexes     Indexes  Table constraints    Table constraints    Table constraints  Table triggers     Table triggers     All triggers  ClustersClusters  Database links     Database links  Job queuesJob queues  Refresh groups     洞芹Refresh groups  SequencesSequences  SnapshotsSnapshots  Snapshot logs      Snapshot logs  Stored procedures    Stored procedures  Private synonyms    All synonyms  ViewsViews  Profiles  Replication catalog  Resource cost  Roles  Rollback segments  System audit options  System privileges  Tablespace definitions    Tablespace quotas  User definitions     IMPORT时的对象倒入顺序    在倒入数据时 ORACLE有一个特定的顺序 可能随数据库版本不同而有所变化     但是    现在是这样的      TablespacesSnapshot Logs   Profiles Job Queues   Users  Refresh Groups   Roles  Cluster Definitions   System Privilege GrantsTables (also grants men  ts    Role Grants indexes constraints audi  ting)   Default RolesReferential Integrity     Tablespace QuotasPOSTTABLES actions     Resource CostsSynonyms   Rollback Segments     Views   Database LinksStored Procedures   SequencesTriggers Defaults and Aud  iting   Snapshots    按这个顺序主要是解决对象之间依赖关系可能产生的问题 TRIGGER最后导入 所以在INSERT数据到数据库时不会激发TRIGGER 在导入后可能会有一些状态是INVALID的PROCEDURE 主要是IMPORT时会影响一些数据库对象 而IMPORT并不重新编译PROCEDURE 从而造成这种情况 可以重新编译之 就能解决这个问题      兼容性问题    IMPORT工具可以处理EXPORT 之后的版本导出的DUMP文件 所以你用ORACLE 的IMPORT处理ORACLE 的DUMP文件 依次类推 但是ORACLE如果版本相差很大有可能不能处理 具体的问题可以参照相应的文档 比如有关参数设置等(PATIBLE参数)     EXPORT需要的VIEW    EXPORT需要的VIEW是由CATEXP SQL创建 这些内部VIEW用于EXPORT组织DUMP文件中数据格式     大部分VIEW用于收集创建DDL语句的 其他的主要供ORACLE开发人员用     这些VIEW在不同ORACLE版本之间有可能不同 每个版本可能都有新的特性加入     所以在新的版本里面执行旧的dump文件会有错误 一般可以执行CATEXP SQL解决这些问题 解决向后兼容问题的一般步骤如下     导出数据库的版本比目标数据库老的情况      在需要导入的目标数据库中执行旧的CATEXP SQL     使用旧的EXPORT导出DUMP文件     使用旧的IMPORT导入到数据库中     在数据库中执行新的CATEXP SQL 以恢复该版本的EXPORT VIEW    导出数据库的版本比目标数据库新的情况      在需要导入的目标数据库中执行新的CATEXP SQL     使用新的EXPORT导出DUMP文件     使用新的IMPORT导入到数据库中     在数据库中执行旧的CATEXP SQL 以恢复该版本的EXPORT VIEW     碎片整理    EXPORT/IMPORT一个很重要的应用方面就是整理碎片 因为如果时初次IMPPORT     就会重新CREATE TABLE 再导入数据 所以整张表都是连续存放的 另外缺省情况    下EXPORT会在生成DUMP文件是 压缩(PRESS) TABLE 但是这种压缩在很多情    况下被误解 事实上 PRESS是改变STORAGE参数INITIAL的值 比如     CREATE TABLE STORAGE( INITIAL K NEXT K )    现在数据已经扩展到 个EXTENT 如果采用PRESS=Y来EXPORT数据 则产生的语句时 STORAGE( INITIAL K NEXT K)    我们可以看到NEXT值并没有改变 而INITIAL是所有EXTENT的总和 所以会出现如下情况 表A有 个 M的EXTENT 执行DELETE FROM A 然后再用PRESS=Y 导出数据 产生的CREATE TABLE语句将有 M的INITIAL EXTENT 即使这是TABLE中已经没有数据!!这是的DUMP文件即使很小 但是在IMPORT时就会产生一个巨大的TABLE     另外 也可能会超过DATAFILE的大小 比如 有 个 M的数据文件 其中表A有 个 M的EXTENT 如果采用PRESS=Y的方式导出数据 将会有INITIAL= M 那么在重新导入时 不能分配一个 M的EXTENT 因为单个EXTENT不能跨多个文件      在USER和TABLESPACE之间传送数据    一般情况下EXPORT的数据要恢复到它原来的地方去 如果SCOTT用户的表以TABLE    或USER方式EXPORT数据 在IMPORT时 如果SCOTT用户不存在 则会报错!    以FULL方式导出的数据带有CREATE USER的信息 所以会自己创建USER来存放数据     当然可以在IMPORT时使用FROMUSER和TOUSER参数来确定要导入的USER 但是要保证TOUSER一定已经存在啦      EXPORT/IMPORT对SQUENCE的影响在两种情况下 EXPORT/IMPORT会对SEQUENCE     ( )如果在EXPORT时 用户正在取SEQUENCE的值 可能造成SEQUENCE的不一致     ( )另外如果SEQUENCE使用CACHE 在EXPORT时 那些在CACHE中的值就会被忽略的 只是从数据字典里面取当前值EXPORT     如果在进行FULL方式的EXPORT/IMPORT时 恰好在用sequence更新表中某列数据 而且不是上面两种情况 则导出的是更新前的数据     如果采用常规路径方式 每一行数据都是用INSERT语句 一致性检查和INSERT TRIGGER如果采用DIRECT方式 某些约束和trigger可能不触发 如果在trigger中使用sequence nextval 将会对sequence有影响     参数解     E:\>exp help=y    通过输入 EXP 命令和用户名/口令 您可以    在用户 / 口令之后的命令:    实例: EXP SCOTT/TIGER    或者 您也可以通过输入跟有各种参数的 EXP 命令来控制 导出 的运行方式     要指定参数 您可以使用关键字:    格式: EXP KEYWORD=value 或 KEYWORD=(value value valueN)    实例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP DEPT MGR)    或 TABLES=(T : P T : P ) 如果 T 是分区表    USERID 必须是命令行中的之一个参数     关键字 说明(默认)     USERID 用户名/口令  FULL 导出整个文件 (N)  BUFFER 数据缓冲区的大小  OWNER 所有者用户名列表  FILE 输出文件 (EXPDAT DMP)  TABLES 表名列表  PRESS 导入一个范围 (Y)  RECORDLENGTH IO 记录的长度  GRANTS 导出权限 (Y)  INCTYPE 增量导出类型  INDEXES 导出索引 (Y)  RECORD 跟踪增量导出 (Y)  ROWS 导出数据行 (Y)  PARFILE 参数文件名  CONSTRAINTS 导出限制 (Y)  CONSISTENT 交叉表一致性  LOG 屏幕输出的日志文件  STATISTICS 分析对象 (ESTIMATE)  DIRECT 直接路径 (N)  TRIGGERS 导出触发器 (Y)  FEEDBACK 显示每 x 行 ( ) 的进度  FILESIZE 各转储文件的更大尺寸  QUERY 选定导出表子集的子句    下列关键字仅用于可传输的表空间    TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)    TABLESPACES 将传输的表空间列表    E:\>imp help=y    可以通过输入 IMP 命令和您的用户名/口令    跟有您的用户名 / 口令的命令:    实例: IMP SCOTT/TIGER    或者 可以通过输入 IMP 命令和各种自变量来控制 导入 按照不同参数     要指定参数 您可以使用关键字:    格式: IMP KEYWORD=value 或 KEYWORD=(value value vlaueN)    实例: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP DEPT) FULL=N    或 TABLES=(T : P T : P ) 如果 T 是分区表    USERID 必须是命令行中的之一个参数     关键字 说明(默认)     USERID 用户名/口令  FULL 导入整个文件 (N)  BUFFER 数据缓冲区大小  FROMUSER 所有人用户名列表  FILE 输入文件 (EXPDAT DMP)  TOUSER 用户名列表  SHOW 只列出文件内容 (N)  TABLES 表名列表  IGNORE 忽略创建错误 (N)  RECORDLENGTH IO 记录的长度  GRANTS 导入权限 (Y)  INCTYPE 增量导入类型  INDEXES 导入索引 (Y)  MIT 提交数组插入 (N)  ROWS 导入数据行 (Y)  PARFILE 参数文件名  LOG 屏幕输出的日志文件  CONSTRAINTS 导入限制 (Y)  DESTROY 覆盖表空间数据文件 (N)  INDEXFILE 将表/索引信息写入指定的文件  SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)  ANAZE 执行转储文件中的 ANAZE 语句 (Y)  FEEDBACK 显示每 x 行 ( ) 的进度  TOID_NOVALIDATE 跳过指定类型 id 的校验  FILESIZE 各转储文件的更大尺寸  RECALCULATE_STATISTICS 重新计算统计值 (N)    下列关键字仅用于可传输的表空间    TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)    TABLESPACES 将要传输到数据库的表空间    DATAFILES 将要传输到数据库的数据文件    TTS_OWNERS 拥有可传输表空间集中数据的用户 lishixinzhi/Article/program/Oracle/202311/16939

数据库命令imp的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库命令imp,数据库必备技能之imp命令详解,exp和imp用法和介绍的信息别忘了在本站进行查找喔。


数据运维技术 » 数据库必备技能之imp命令详解 (数据库命令imp)