首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL Developer的Oracle大容量插入

使用SQL Developer的Oracle大容量插入
EN

Stack Overflow用户
提问于 2016-10-06 10:03:37
回答 1查看 6K关注 0票数 1

我最近从Oracle数据库中获取了数据转储。其中许多文件都很大(约5 5GB)。我正在尝试通过在SQL Developer中执行以下SQL将转储的数据插入到另一个Oracle数据库中

代码语言:javascript
复制
@C:\path\to\table_dump1.sql;
@C:\path\to\table_dump2.sql;
@C:\path\to\table_dump3.sql;
             :

但是完成一个SQL文件也需要很长的时间,比如一天以上。

有没有更好的方法来更快地完成这项工作?

EN

回答 1

Stack Overflow用户

发布于 2016-10-06 10:09:06

SQL*Loader是我最喜欢的将大量数据加载到Oracle中的方法。使用direct path insert选项以获得最大速度,但要了解直接路径加载的影响(例如,所有数据都会插入超过高水位线,如果您截断您的表,这是很好的)。它甚至可以容忍不好的行,所以如果你的数据有“一些”错误,它仍然可以工作。

SQL*Loader可以挂起索引并在最后构建所有索引,这使得大容量插入非常快。

SQL*Loader调用示例:

代码语言:javascript
复制
$SQLDIR/sqlldr /@MyDatabase direct=false silent=feedback \
    control=mydata.ctl log=/apps/logs/mydata.log bad=/apps/logs/mydata.bad \
    rows=200000

mydata.ctl应该看起来像这样:

代码语言:javascript
复制
LOAD DATA
INFILE '/apps/load_files/mytable.dat'
INTO TABLE my_schema.my_able
FIELDS TERMINATED BY "|"
 (ORDER_ID,
  ORDER_DATE,
  PART_NUMBER,
  QUANTITY)

或者..。如果您只是跨数据库将一个表的全部内容复制到另一个表,那么您可以这样做,前提是您的数据库管理员设置了一个DBlink (一个30秒的过程),前提是您的数据库设置了重做空间来完成此操作。

代码语言:javascript
复制
truncate table my_schema.my_table;

insert into my_schema.my_table
select * from my_schema.my_table@my_remote_db;

/* +append */提示的使用仍然可以使用直接路径插入。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39886379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档