使用SQL*LoaderC:\> sqlldr userid=user/password control=lc2.ctl log=lc2.log bad=lc2.badSQL*Loader: Release 9.2.0.1.0 - Production on Wed Jun 4 18:03:53 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.Commit point reached - logical record count 50C:\> 其中lc2.ctl内容为:#--------------------------------------------
LOAD DATA
INFILE *
REPLACE
INTO TABLE 表名
FIELDS TERMINATED BY "," ----这里指定字段间的分隔符号
(字段列表)
BEGINDATA
673969,1,20010205,174948,0000 ----这是就是一行记录(文本)
673969,3,20010205,174709,0000
...
#--------------------------------------------楼主的问题可以用一个字段来进行。
LOAD DATA
INFILE *
REPLACE
INTO TABLE 表名
FIELDS TERMINATED BY "," ----这里指定字段间的分隔符号
(字段列表)
BEGINDATA
673969,1,20010205,174948,0000 ----这是就是一行记录(文本)
673969,3,20010205,174709,0000
...
#--------------------------------------------楼主的问题可以用一个字段来进行。
chr(13):回车符
chr(10):换行符
just save datas in tables?
545124555
fsdfsdfsd
存储过程:
v_bfile BFILE;
v_clob CLOB;
begin
INSERT INTO save_file (content)
VALUES (empty_clob())
RETURN content INTO v_clob;
v_bfile := BFILENAME('DOCUMENTS','x1.txt');
Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly);
Dbms_Lob.Loadfromfile(v_clob, v_bfile, Dbms_Lob.Getlength(v_bfile));
Dbms_Lob.Fileclose(v_bfile);
COMMIT;
end;
为什么保存是乱码呢?
Filename IN VARCHAR2,
Open_mode IN VARCHAR2)
RETURN FILE_TYPE;Location 文件目录路径
Filename 要打开的文件名,如果打开方式为“w”,则现存的文件被覆盖。
Open_mode 文件的打开方式,“r”表示读文本;“w”表示写文本;“a”表示追加。
Return value 返回的值。2.使用max_linesize 参数的文件打开在Oracle 8.0.5以后的版本,可以用下面函数来打开文件:FUNCTION FOPEN (location IN VARCHAR2,
Filename IN VARCHAR2,
Open_mode IN VARCHAR2,
Max_linesize IN BINARY_INTEGER
)
RETURN FILE_TYPE;这里的max_linesize 表示文件的最大行数。可以在1-32767范围内,缺省为1024。3.关闭文件(FCLOSE)当文件被打开后,就需要在用完后进行关闭,用下面函数实现对文件的关闭:PROCEDURE FCLOSE(file_handle IN OUT FILE_TYPE ) ;这里file_handle是文件句柄。4.判断文件的打开(IS_OPEN)文件是否被打开,可以用IS_OPEN函数来实现。如果文件已经打开,则返回TRUE;否则返回FALSE。FUNCTION IS_OPEN(file_name IN FILE_TYPE);
RETURN BOOLEAN;5.使用FCLOSE_ALL关闭所有文件对于那些想省事的编程人员,可以用FCLOSE_ALL来在程序的后部一次就关闭掉所有被打开的文件。它的语法很简单:PROCEDURE FCLOSE_ALL;
§21.2.3文件输出Oracle PL/SQL包提供5个过程来实现将数据输出到文件中。它们是PUT、PUT_LINE、NEW_LINE、PUTE及FFLUSH。下面分别给出说明。1.PUT过程PROCEDURE PUT(file_handle IN FILE_TYPE,
buffer IN VARCHAR2);通过PUT过程可以将字符追加到文件中,如果需要的话,可以使用PUT_LINE或NEW_LINE在行中加入行结束符。这里的file_handle 是文件的句柄(标识);buffer 是等待写入文件的字符串。如果文件打开没有使用“w”或“a”,则引发错误。
2.NEW_LINE过程PROCEDURE NEW_LINE( file_handle IN FILE_TYPE,
Lines IN NATURAL:=1);表示行结束符,它与操作系统有关。这里的lines 是输出的行结束符的个数。缺省为1。即输出一个新行。如果文件打开没有使用“w”或“a”,则引发错误。3.PUT_LINE过程PROCEDURE PUT_LINE( file_handle IN FILE_TYPE,
buffer IN VARCHAR2);通过PUT_LINE过程等价于PUT与NEW_LINE一起的功能。这里的file_handle 是文件的句柄(标识);buffer 是等待写入文件的字符串。如果文件打开没有使用“w”或“a”,则引发错误。4.PUTF过程PROCEDURE PUTF( file_handle IN FILE_TYPE,
Format IN VARCHAR2,
Arg1 IN VARCHAR2 DEFAULT NULL,
Arg2 IN VARCHAR2 DEFAULT NULL,
Arg3 IN VARCHAR2 DEFAULT NULL,
Arg4 IN VARCHAR2 DEFAULT NULL,
Arg5 IN VARCHAR2 DEFAULT NULL
);这里的file_handle 是文件的句柄(标识);arg1至arg5是可省的变量。Format是带有字符和带有特殊符号“%s”和“\n”的格式说明。
5.FFLUSH过程前面介绍的PUT、PUT_LINE、NEW_LINE、PUTE输出的数据首先是放在缓冲区里。当缓冲区填满后,缓冲区的内容自动被写入到文件。但我们可以不需要等待缓冲区填满就立即强行写入指定的文件。FFLUSH就是完成这样的过程:PROCEDURE FFLUSH( file_handle IN FILE_TYPE )
Buffer OUT VARCHAR2 );这里的file_handle 是文件的句柄(标识);
buffer 将写入的缓冲区,如果文件没有以读(“r”)的方式打开,则引发UTL_FILE.INVALID_OPERATION异常。当从文件中读入最后一行时,异常NO_DATA_FOUND就会发生。如果读入空行就会返回空字符NULL。
文件操作例子下面例子选自原版资料 :
例子.
下面例子写一行文本字符:
Hello, world!
I come from Zork with greetings for all earthlings.my_world varchar2(4) := ’Zork’;
...
PUTF(my_handle, ’Hello, world!\nI come from %s with %s.\n’,
my_world,
’greetings for all earthlings’);