标签: sql-loader

用于创建Oracle SQL Loader控制文件的用户界面

是否有用于创建Oracle SQL Loader控制文件的良好用户界面?PL/SQL Developer包含一个"文本导入器"功能(提醒其中一个Excel导入向导)将文本文件导入表中,但使用专有格式而不是SQL Loader格式.对于SQL Loader格式,这样的东西会非常有用.

ide oracle sql-loader

5
推荐指数
1
解决办法
7289
查看次数

多个infiles的Oracle Sql Loader跳过选项

使用SQL Loader控制文件时如下:

OPTIONS(**skip=1**,bindsize=1048576,rows=1024)
LOAD DATA
INFILE 'C:\Documents and Settings\FIRST.CSV'
INFILE 'C:\Documents and Settings\SECOND.CSV'
APPEND
INTO TABLE table_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'  TRAILING NULLCOLS
(
fields
)
Run Code Online (Sandbox Code Playgroud)

它会跳过FIRST.CSV文件的标题行,但会将SECOND.CSV中的标题行加载到Oracle表中.我的解决方案是将此控制文件分成两个单独的文件.有没有办法遵守一个控制文件?

oracle sql-loader

5
推荐指数
1
解决办法
5万
查看次数

以直接模式运行的Oracle SQL*加载程序比传统路径加载慢得多

在过去的几天里,我一直在使用Oracle的SQL*Loader来尝试将数据批量加载到Oracle中.在尝试了不同的选项组合后,我惊讶地发现传统的路径负载比直接路径负载运行得快得多.

关于这个问题的一些事实:

  • 要加载的记录数为60K.
  • 加载前,目标表中的记录数为7亿.
  • Oracle版本是11g r2.
  • 数据文件包含日期,字符(ascii,无需转换),整数,浮点数.没有blob/clob.
  • 表由哈希分区.散列函数与PK相同.
  • 表的并行设置为4,而服务器有16个CPU.
  • 索引是本地分区的.索引的并行(来自ALL_INDEXES)是1.
  • 目标表上只有1个PK和1个索引.使用索引构建PK约束.
  • 检查索引分区显示分区之间的记录分布非常均匀.
  • 数据文件是分隔的.
  • 使用APPEND选项.
  • 通过SQL选择和删除加载的数据非常快,几乎是即时响应.

使用传统路径,加载在大约6秒内完成.

对于直接路径负载,加载大约需要20分钟.最糟糕的运行需要1.5小时才能完成,但服务器根本不忙.

如果启用了skip_index_maintenance,则直接路径加载将在2-3秒内完成.

我已经尝试了很多选项,但它们都没有给出明显的改进......难以置信,分类索引,多线程(我在多CPU服务器上运行SQL*Loader).他们都没有改善这种情况.

这是在SQL*Loader以直接模式运行期间我一直看到的等待事件:

  • 事件:db文件顺序读取
  • P1/2/3:文件#,块#,块(从dba_extents检查它是一个索引块)
  • 等待类:用户I/O.

有没有人知道直接路径加载出了什么问题?或者有什么我可以进一步检查,以真正挖掘问题的根本原因?提前致谢.

oracle performance sql-loader

5
推荐指数
1
解决办法
7869
查看次数

Oracle 11gR2加载多个文件:sqlldr还是外部表?

我有471个文件,总计约100GB.这些文件是"\ t"分开的,事务数据采用以下格式:

char(10) not null,
char(8) not null,
char(1) not null,
char(4) not null,
number not null,
char(1) not null,
char(1) not null,
char(1) not null,
number not null
Run Code Online (Sandbox Code Playgroud)

文件中事务的顺序很重要,需要保留,理想情况下使用主键ID.最初,我用sqlldr加载这些文件但是需要很长时间.我最近了解了外部表格.从战略角度看,哪种方法更好?外部表如何工作?谢谢.

oracle oracle11gr2 sql-loader

5
推荐指数
1
解决办法
4769
查看次数

使用SQL*Loader更新表中的列?

我编写了一个具有以下查询的SQL脚本.查询工作正常.

update partner set is_seller_buyer=1 where id in (select id from partner 
where names in 
(
'A','B','C','D','E',... // around 100 names.
));
Run Code Online (Sandbox Code Playgroud)

但现在我不想在查询中写入大约100个名称,而是想从CSV文件中获取所有名称.我在互联网上阅读了关于SQL*Loader但我对更新查询没有太多了解.我的csv文件只包含名称.

在此输入图像描述

我试过了

  load data
  infile 'c:\data\mydata.csv'
  into table partner set is_wholesaler_reseller=1
  where id in (select id from partner 
  where names in 
  ( 
  'A','B','C','D','E',... // around 100 names.
  ));
  fields terminated by "," optionally enclosed by '"'         
  ( names, sal, deptno )
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?提前致谢.

sql oracle sql-loader

5
推荐指数
1
解决办法
2万
查看次数

ORA删除/截断

我正在使用 SQL 加载器将我的数据加载到数据库中。

在插入数据之前,我需要删除表中的现有数据:

options(skip=1,load=250000,errors=0,ROWS=30000,BINDSIZE=10485760)
load data
infile 'G:1.csv' "str '^_^'"
replace
into table IMPORT_ABC
fields terminated by "," OPTIONALLY ENCLOSED BY '"'
trailing nullcols(
.
.
.
.)
Run Code Online (Sandbox Code Playgroud)

但我得到了如下错误:

SQL*LOADER-926:对表 IMPORT_ABC 执行删除/截断时发生 OCI 错误 ORA-30036:无法在撤消表空间“undo1”中将段扩展 8

如何删除数据,例如 10000 行?我知道我的数据库有一些限制。

sql oracle truncate sql-loader

5
推荐指数
1
解决办法
2万
查看次数

在SQL*Loader控制文件中设置日期格式

我的csv文件有"2009年9月17日上午11:06:06"作为COMPLETED_ON变量

我正在使用sql loader将数据加载到oracle,如下所示:

LOAD DATA
INFILE 'c:/load/file_name.csv'
APPEND
INTO TABLE tbl_name
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
COMPLETED_ON DATE "not sure what to put here",
) 
Run Code Online (Sandbox Code Playgroud)

在oracle中我创建了如下列:

具有本地时区的"COMPLETED_ON"TIMESTAMP(0)

如何在控制文件中更改COMPLETED_ON日期?

oracle to-date sql-loader

5
推荐指数
1
解决办法
6万
查看次数

通过SQLLDR将多个csv加载到一个表中

我正在使用SQL LOADER在一个表中加载多个csv文件.我发现的过程非常简单

LOAD
  DATA 
  INFILE '/path/file1.csv'
  INFILE '/path/file2.csv'
  INFILE '/path/file3.csv'
  INFILE '/path/file4.csv'
  APPEND INTO TABLE TBL_DATA_FILE
    EVALUATE CHECK_CONSTRAINTS
    REENABLE DISABLED_CONSTRAINTS
    EXCEPTIONS EXCEPTION_TABLE
  FIELDS TERMINATED BY "," 
  OPTIONALLY ENCLOSED BY '"'
  TRAILING NULLCOLS
  ( 
    COL0,
    COL1,
    COL2,
    COL3,
    COL4
  )
Run Code Online (Sandbox Code Playgroud)

但是如果我有超过1000个文件,我不想多次使用INFILE,那么我必须在控制文件脚本中提到1000次INFILE.

所以我的问题是:是否有任何其他方式(如任何循环/任何*.csv)加载多个文件而不使用多个infile?

谢谢,Bithun

sql oracle sql-loader

5
推荐指数
1
解决办法
3万
查看次数

SQL*Loader无法识别分隔符"¥"

尝试使用¥分隔符加载UTF-8文件时,它在找到字符时不会分隔字段.我们从超过列大小的值中得到ORA-12899错误,因为它试图将整行放入第一列.

在UTF-8中,¥¥(C2A5),但似乎它试图找到C2C2A5.

数据库设置是

NLS_LANGUAGE    SPANISH
NLS_TERRITORY   SPAIN
NLS_CURRENCY    ?
NLS_ISO_CURRENCY    SPAIN
NLS_NUMERIC_CHARACTERS  ,.
NLS_CHARACTERSET    WE8ISO8859P15
NLS_CALENDAR    GREGORIAN
NLS_DATE_FORMAT DD/MM/RR
NLS_DATE_LANGUAGE   SPANISH
NLS_SORT    SPANISH
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT    DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT  HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY   ?
NLS_COMP    BINARY
NLS_LENGTH_SEMANTICS    BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET  AL16UTF16
NLS_RDBMS_VERSION   11.2.0.3.0
Run Code Online (Sandbox Code Playgroud)

我们尝试过:

NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
NLS_LANG=SPANISH_SPAIN.WE8MSWIN1252
Run Code Online (Sandbox Code Playgroud)

我们从具有西班牙语语言环境的Windows 7计算机上的命令窗口运行SQL*Loader.

控制文件:

LOAD DATA
CHARACTERSET UTF8
INFILE  'C:\tmp\xxxy.txt'
BADFILE 'C:\tmp\xxxy.bad'
TRUNCATE INTO TABLE  SAMPLE.TEST_CAR_VENCIMI_INTERMED
fields terminated by "¥"
TRAILING NULLCOLS
(
CODE             CHAR …
Run Code Online (Sandbox Code Playgroud)

oracle utf-8 delimiter sql-loader

5
推荐指数
1
解决办法
469
查看次数

使用sqlLoader将XML文件加载到xmltype字段中

我正在尝试将XML文件加载到oracle 11g中的XMLTYPE clob中.到目前为止,我想出了这个控制文件:

LOAD DATA 
INFILE 'stocknotify.xml'
append INTO TABLE order_input 
(
    xml LOBFILE(CONSTANT 'stocknotify.xml') TERMINATED BY EOF
)
Run Code Online (Sandbox Code Playgroud)

这个控制文件工作得很好,除了它加载XML文件7次.我想这是因为XML文件由7行组成,但是,我不知道如何阻止sql loader执行并只加载文件一次.

有任何想法吗?

xml oracle sql-loader

5
推荐指数
1
解决办法
773
查看次数

标签 统计

oracle ×10

sql-loader ×10

sql ×3

delimiter ×1

ide ×1

oracle11gr2 ×1

performance ×1

to-date ×1

truncate ×1

utf-8 ×1

xml ×1