sqlldr insert append哪个更快

sql loader可以把一些以文本格式存放的数據顺利的导入到oracle数据库中
是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。

  APPEND // 原先的表有数据 就加在后面

  // REPLACE // 原先嘚表有数据 原先的数据会全部删除

   注意begindata后的数值前面不能有空格

  3 ***** 指定不装载那一列

  6 ***** 使用自定义的函数 // 解决的时间问题

  7 ***** 合並多行记录为一行记录

  告诉sqlldr在每行的末尾找逗号 找到逗号就把下一行附加到上一行

  BEGINDATA // 但是好象不能象右面的那样使用

  8 ***** 载入每行嘚行号

  9 ***** 载入有换行符的数据

  < 1 > 使用一个非换行符的字符

大家好 用 sqlldr 执行后 插入数据一部分數据后 出错了

当加载大量数据时(大约超过10GB)最好抑制日志的产生:

 在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!其实估計能到1-10G就算不错了,开始可用结构 相同的文件但只有少量数据,成功后开始加载大量数据这样可以避免时间的浪费。

想知道 并发 到低是怎么一回事 是对同一个文件 操作 还是多个文件 并行操作 那些参数 有用

我运行了 12个小时 插入了 几百万数据 有点慢 需要在那里设置那些参數 能插入快点 表上有索引

2. 以append方式批量插入的记录其存储位置在hwm 之上,即使hwm之下存在空闲块也不能使用

HWM(高水位线)(High Water Mark):是数据库段管理中的一个重要概念,简单来说HWM就是在段中已经使用和没囿使用的块的分界线在oracle请求空间的时候,如果现有的Freelist中没有足够的空间时HWM指向的块将被标记为已使用并且HWM将移动到下一个未使用的块。

3. 以append方式插入记录后要执行commit,才能对表进行查询否则会出现错误:
ORA-12838:无法在并行模式下修改之后读/修改对象
4. 在归档模式下,要把表設置为nologging然后以append方式批量添加记录,才会显著减少redo数量在非归档模式下,不必设置表的 nologging属性即可减少redo数量。如果表上有索引则append方式批量添加记录,不会减少索引上产生的redo数量索引上的redo 数量可能比表的redo数量还要大。
5. 同 nologging 配合会更快的使用新的BLOCK而不使用FREELIST中的块来增加插叺速度,使用这个hint可以将数据使用直接路径插入到表的高水线之后由于是连续的没有使用的空间,所以插入速度快就是说直接插入,減少了搜索块的时间

会在一定程度上造成空间浪费

SQL语句中的优化提示

我要回帖

 

随机推荐