需要用sqlldr一次地把数据导入到表中,其中的content字段的值是外文件,外文件的名称在filename字段的值。现如下设计表
create table A
{
textID number(10),
filename varchar(30),
content blob
}
ctl文件是这样的:load data
append
fields terminated by ","
{
textID,
filename,
content LOBFILE(filename) TERMINATED BY EOF
}
现在情况是这样:因为上游提供的filename的值,是一个单纯的文件名,比如aa.txt
我想在ctl文件中,将绝对路径和该文件名拼在一起,如 'D:\attact\aa.txt' 好让sqlldr直接到该位置找到该文件导入。
因此,我的sqlldr 写法如下:load data
append
fields terminated by ","
{
textID,
filename,
content LOBFILE('D:\attact\'||filename) TERMINATED BY EOF
}
但这样写,执行时报错,log文件显示:sql*loader-649 引起来的字符串缺少右括号高人帮忙看看,如果要实现以上的要求,ctl文件要怎么写才行?因为刚注册的,只有20原始分。谢谢啦
create table A
{
textID number(10),
filename varchar(30),
content blob
}
ctl文件是这样的:load data
append
fields terminated by ","
{
textID,
filename,
content LOBFILE(filename) TERMINATED BY EOF
}
现在情况是这样:因为上游提供的filename的值,是一个单纯的文件名,比如aa.txt
我想在ctl文件中,将绝对路径和该文件名拼在一起,如 'D:\attact\aa.txt' 好让sqlldr直接到该位置找到该文件导入。
因此,我的sqlldr 写法如下:load data
append
fields terminated by ","
{
textID,
filename,
content LOBFILE('D:\attact\'||filename) TERMINATED BY EOF
}
但这样写,执行时报错,log文件显示:sql*loader-649 引起来的字符串缺少右括号高人帮忙看看,如果要实现以上的要求,ctl文件要怎么写才行?因为刚注册的,只有20原始分。谢谢啦
解决方案 »
- 64位客户端连32服务器的问题。
- ORA-00600 4194
- oracle穿过防火墙的巨难问题,给100分了,含泪等待 ,跪谢
- IMP-00020: 用于列缓冲区大小 (10) 的长整数列过大???????????????????
- 求救:一条简单的UPDATE语句!
- 一个SQL语句(select)问题
- 为何oracle9i 的FOREIGN KEY 没有 ON UPDATE CASCADE?
- 高分请教触发器问题,继续,答完可立刻给分
- ●●●●●一句SQL的写法.这是无法完成的任务吗,看看有没有高手来实现?●●
- varchar在建表时的疑惑?哪位能解释一下
- oas deploy与undeploy得问题
- 关于windows 2003上安装RAC事vip ip的问题。
=========================
load data
append
fields terminated by ","
{
textID,
filename,
content LOBFILE('D:\attact\'||filename) TERMINATED BY EOF
}
改为
load data
append
fields terminated by ","
{
textID,
filename,
content LOBFILE('D:\attact\aa.txt') TERMINATED BY EOF
}
Solution 1:content LOBFILE(filename) TERMINATED BY EOF -- 路径直接写在数据文件中所对应的filename里
Solution 2:content LOBFILE(CONSTANT 'D:\attact\aa.txt') TERMINATED BY EOF -- 固定的文件名和路径
Solution 3: content LOBFILE(CONSTANT 'D:\attact\aa.txt'||filename) TERMINATED BY EOF -- 不知道对不对