因此,我经常需要将数据加载到保存表中以运行一些数据验证检查,然后返回结果.通常,我创建保存表,然后创建一个sqlldr控制文件并将数据加载到表中,然后运行我的查询.是否有任何理由我应该使用外部表格来代替?他们会以什么方式让我的生活更轻松?
我正在使用Linux shell中的Oracle Sql Loader Utility将csv数据加载到Oracle DB中.但我注意到,如果源csv文件行结尾为'\ r \n'(Windows格式),则sqlldr无法加载最后一列的数据.
例如,如果最后一列是FLOAT类型(在ctl文件中定义为'FLOAT EXTERNAL'),sqlldr将失败并显示'ORA-01722:无效数字':
Sqlldr ctl文件:
OPTIONS(silent=(HEADER))
load data
replace
into table fp_basic_bd
fields terminated by "|" optionally enclosed by '"'
TRAILING NULLCOLS
(
FS_PERM_SEC_ID CHAR(20),
"DATE" DATE "YYYY-MM-DD",
ADJDATE DATE "YYYY-MM-DD",
CURRENCY CHAR(3),
P_PRICE FLOAT EXTERNAL,
P_PRICE_OPEN FLOAT EXTERNAL,
P_PRICE_HIGH FLOAT EXTERNAL,
P_PRICE_LOW FLOAT EXTERNAL,
P_VOLUME FLOAT EXTERNAL
)
Run Code Online (Sandbox Code Playgroud)
sqlldr执行命令:
sqlldr -userid XXX -data ./test.data -log ./test.log -bad ./test.errors -control test.ctl -errors 3 -skip_unusable_indexes -skip_index_maintenance
Run Code Online (Sandbox Code Playgroud)
sqlldr错误日志:
Column Name Position Len Term Encl Datatype …Run Code Online (Sandbox Code Playgroud) 我正在尝试从文件加载数据,我想将CREATED_DATE和UPDATED_DATE设置为SYSDATE,将CREATE_BY和UPDATED_BY设置为USER
这是我正在使用的表格:
CREATE TABLE CATALOG
(CNO NUMBER,
CTITLE VARCHAR2(25),
CREATED_BY VARCHAR2(10) NOT NULL,
CREATED_DATE DATE NOT NULL,
UPDATED_BY VARCHAR2(10) NOT NULL,
UPDATED_DATE DATE NOT NULL,
CONSTRAINT CATALOG_PK Primary Key (CNO));
Run Code Online (Sandbox Code Playgroud)
这是数据文件:
1,"Title 1"
2,"Title 2"
3,"Title 3"
4,"Title 4"
5,"Title 5"
6,"Title 6"
Run Code Online (Sandbox Code Playgroud)
和我的控制文件:
LOAD DATA
INFILE "mydata.csv"
INTO TABLE CATALOG
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(CNO,CTITLE,CREATED_BY "USER", CREATED_DATE "SYSDATE", UPDATED_BY "USER", UPDATED_DATE "SYSDATE")
Run Code Online (Sandbox Code Playgroud)
当我尝试使用SQL Loader加载它时...所有记录都被拒绝:
Record 1: Rejected - Error on table CATALOG, column CREATED_BY.
Column …Run Code Online (Sandbox Code Playgroud) 我们在sql loader中遇到了问题.我们试图在使用Sql Loader的某些条件的基础上,将大约46亿行(接近340 GB)的数据文件加载到2个oracle表中.但是在加载了42亿条记录之后,即使还要加载其余的记录,SQL加载程序进程也会完成而不会抛出任何错误.
也没有任何记录或不良记录.SQL Loader可以加载的记录数是否有限制?在任何地方都找不到任何这样的东西.如果有人对这个问题有任何线索,请告诉我.
谢谢!!
我正在尝试使用 SQL Loader 将本地化字符串从 unicode(UTF8 编码)csv 加载到 Oracle 数据库中。我已经尝试了各种组合,但似乎没有给我我正在寻找的结果,即有特殊的希腊字符,如 (\xce\x94) 不会转换为 \xc3\x8e\xe2\x80\ x9d 或 \xc2\xbf。
\n\n我的表定义如下所示:
\n\nCREATE TABLE "GLOBALIZATIONRESOURCE"\n(\n "RESOURCETYPE" VARCHAR2(255 CHAR) NOT NULL ENABLE,\n "CULTURE" VARCHAR2(20 CHAR) NOT NULL ENABLE,\n "KEY" VARCHAR2(128 CHAR) NOT NULL ENABLE,\n "VALUE" VARCHAR2(2048 CHAR),\n "DESCRIPTION" VARCHAR2(512 CHAR),\n CONSTRAINT "PK_GLOBALIZATIONRESOURCE" PRIMARY KEY ("RESOURCETYPE","CULTURE","KEY") USING INDEX TABLESPACE REPSPACE_IX ENABLE\n)\nTABLESPACE REPSPACE; \nRun Code Online (Sandbox Code Playgroud)\n\n我已经在我的控制文件中尝试了以下配置(实际上是我能想到的每个排列)
\n\nload data\nTRUNCATE\nINTO TABLE "GLOBALIZATIONRESOURCE"\nFIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY \'"\'\nTRAILING NULLCOLS\n( \n "RESOURCETYPE" CHAR(255), \n "CULTURE" CHAR(20), \n "KEY" …Run Code Online (Sandbox Code Playgroud) 使用SQL*Loader加载日语数据时出现以下错误.我的数据库是UTF8(NLS参数),我的操作系统支持UTF8.
Record 5: Rejected - Error on table ACTIVITY_FACT, column METADATA.
ORA-12899: value too large for column METADATA (actual: 2624, maximum: 3500)
Run Code Online (Sandbox Code Playgroud)
我的控制文件:
load data
characterset UTF8
infile '../tab_files/activity_fact.csv' "STR ';'"
APPEND
into tableactivity_fact
fields terminated by ',' optionally enclosed by '~'
TRAILING NULLCOLS
(metadata CHAR(3500))
Run Code Online (Sandbox Code Playgroud)
我的桌子
create table actvuty_facr{
metadata varchar2(3500 char)
}
Run Code Online (Sandbox Code Playgroud)
为什么SQL Loader会抛出错误的异常,(actual: 2624, maximum: 3500).2624小于3500.
如何使用SQL Developer以“加载程序”格式导入数据?
SQLDeveloper可以“加载程序”格式导出数据,因此我想重新导入它。
注意:我无法登录到运行Oracle DB的服务器,并且我没有sysdba特权。
我试图在redhat机器上安装Oracle即时客户端.我有instantClient基本,sdk和sqlplus但我找不到任何sqlldr.有人可以帮我做吗?谢谢
我的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日期?
我正在尝试将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执行并只加载文件一次.
有任何想法吗?