imp导入大数据量文件

在使用exp、imp将数据转移时,由于现场的数据可能是海量,在使用exp导出的时候,exp会导出建表语句和表的内容,建表中有一个参数initial,这个参数表示表的初始化的大小,默认是64k,而exp时,会根据表的大小动态的改变这个值,那么在导入的时候,会先创建这个表,而假如是海量数据,那么创建表就会失败,导入不成功

解决:先创建表(initial默认64k),导入时,指定ignore=y,表示忽略错误,创建表失败时,也会继续导入数据。

也可以导出少量数据,使用tables,query指定表和指定列,导出指定的数据

如果确定哪些数据,可以使用plsql导出insert语句
### 如何使用 IMP 工具导入 DMP 文件 `IMP` 是 Oracle 提供的传统导入工具,用于将通过 `EXP` 命令导出的数据重新加载到目标数据库中。以下是有关如何使用 `IMP` 工具导入 `.dmp` 文件的具体方法。 #### 使用语法 基本的 `IMP` 命令结构如下所示: ```bash imp username/password@database_file_name FILE=dumpfile.dmp LOG=import.log FULL=Y ``` 其中各参数的意义解释如下: - **username/password**: 这是指定的目标数据库用户名和密码。 - **FILE**: 指定要从中读取数据的二进制转储文件的位置和名称[^3]。 - **LOG**: 可选日志文件名,记录导入过程中的所有活动以便后续审查。 - **FULL**: 如果设置为 Y,则表示整个导出文件都将被导入;如果只希望导入特定对象或部分数据,则可以省略此选项或者调整其他过滤器参数。 除了上述主要参数外,还可以利用更多高级选项来控制哪些模式(schema),表(table)甚至行(row)应该被处理。例如: - **TABLES=(table1, table2,...)**: 列举需要恢复的一系列表格名字列表。 - **ROWS=N/YES**: 控制是否仅复制元数据(定义信息)还是连同实际数据一起迁移,默认情况下会包含两者[Y]. #### 实际操作案例 假设有一个名为 example.dmp 的 dump 文件位于 C:\temp\example.dmp 路径下,并且我们打算将其完全迁移到 TESTUSER 用户下的 ORCL 数据库实例里去。那么完整的命令可能是这样的形式: ```bash imp testuser/testpassword@orcl file=C:\temp\example.dmp log=C:\temp\example_import.log full=y ignore=n commit_interval=none buffer=4096000 statistics=none direct=no feedback=1000 ``` 这里额外增加了几个重要的配置项说明如下: - **IGNORE**: 当遇到重复的对象创建错误忽略它们继续执行剩余的任务[N]. - **COMMIT_INTERVAL**: 定义每次提交事务前插入多少条记录数[无默认值],此处设为了不自动提交. - **BUFFER**: 设置内部缓冲区大小字节数量影响性能调优建议适当增大该数值提高效率[4MB]. - **STATISTICS**: 不收集统计信息加快速度[NONE]. - **DIRECT**: 是否启用直接路径写入机制提升大批量装载效能但是可能丢失某些特性支持比如触发器等[NO]. 以上就是基于传统方式运用 IMP 来完成 dmp 文件向 oracle 数据库内的传输流程概述以及一些常用技巧分享. ```sql -- 示例 SQL 查询验证导入后的数据是否存在 SELECT COUNT(*) FROM all_tables WHERE owner='TESTUSER'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值