9 个解决方案
#1
参考:
Oracle数据直接导出到文本文件的方法
http://www.builder.com.cn/2007/1005/536616.shtml
Oracle数据直接导出到文本文件的方法
http://www.builder.com.cn/2007/1005/536616.shtml
#2
我不想将这么多数据导成一个文件,因为一个文件太大了打不开,有没有好的办法导成多个文本(.txt)文件?
#3
你修改一哈查询的地方就是了,一次导出一部分数据麻
循环来执行就是了
循环来执行就是了
#4
占位学习
#5
参考如下方法:
DECLARE
CURSOR L_V IS
SELECT VIEW_NAME, S.TEXT_LENGTH FROM USER_VIEWS S;
L_F UTL_FILE.FILE_TYPE;
L_NUM INT DEFAULT 0;
L_MAXSIZE INT DEFAULT 5000; --每个文件可以存储的记录数
L_FILENO INT DEFAULT 1;
BEGIN
FOR I IN L_V LOOP
IF MOD(L_NUM, L_MAXSIZE) = 0 THEN
IF L_FILENO > 0 THEN
UTL_FILE.FCLOSE(L_F);
END IF;
L_F := UTL_FILE.FOPEN('TEST',
'xx' || L_FILENO || '.txt',
'w',
32767);
L_FILENO := L_FILENO + 1;
END IF;
UTL_FILE.PUT_LINE(L_F, I.VIEW_NAME || ',' || I.TEXT_LENGTH);
L_NUM := L_NUM + 1;
END LOOP;
UTL_FILE.FCLOSE(L_F);
END;
/
#6
学习了,可惜没有海量数据,无法实践了!
#7
不好意思,这几天才把数据导进去
数据量是1亿多条,我就一张表users,一个字段username(主键)
现在要把这些数据导成多个文本文件,按照一楼的意思我写成这样执行:
sool d:\d.txt
set heading off
set feedback off
select username from users where rownum<10000;
spool off;
将上面的代码在sql plus上执行
后来我发现有几个问题:
第一:select username from users where rownum<10000;与select username from users where rownum<100;这两条语句查出来的前一百条数据根本上就对不上,不是一样的,也就是说到时我循环导出时,修改rownum<10000中值的大小时,这样导出来的数据有可以是重复的;
第二:这个循环怎么写啊,生成不同的文件
5楼的那些语句能不能做个注释啊?看不懂
#8
刚没仔细看,觉得挺吓人的,仔细看了一下,还是看懂了。。。
这个循环,我电脑不会卡死吧?我还不敢执行
这个循环,我电脑不会卡死吧?我还不敢执行
#9
L_FILENO 的默认值应该是0吧。
#1
参考:
Oracle数据直接导出到文本文件的方法
http://www.builder.com.cn/2007/1005/536616.shtml
Oracle数据直接导出到文本文件的方法
http://www.builder.com.cn/2007/1005/536616.shtml
#2
我不想将这么多数据导成一个文件,因为一个文件太大了打不开,有没有好的办法导成多个文本(.txt)文件?
#3
你修改一哈查询的地方就是了,一次导出一部分数据麻
循环来执行就是了
循环来执行就是了
#4
占位学习
#5
参考如下方法:
DECLARE
CURSOR L_V IS
SELECT VIEW_NAME, S.TEXT_LENGTH FROM USER_VIEWS S;
L_F UTL_FILE.FILE_TYPE;
L_NUM INT DEFAULT 0;
L_MAXSIZE INT DEFAULT 5000; --每个文件可以存储的记录数
L_FILENO INT DEFAULT 1;
BEGIN
FOR I IN L_V LOOP
IF MOD(L_NUM, L_MAXSIZE) = 0 THEN
IF L_FILENO > 0 THEN
UTL_FILE.FCLOSE(L_F);
END IF;
L_F := UTL_FILE.FOPEN('TEST',
'xx' || L_FILENO || '.txt',
'w',
32767);
L_FILENO := L_FILENO + 1;
END IF;
UTL_FILE.PUT_LINE(L_F, I.VIEW_NAME || ',' || I.TEXT_LENGTH);
L_NUM := L_NUM + 1;
END LOOP;
UTL_FILE.FCLOSE(L_F);
END;
/
#6
学习了,可惜没有海量数据,无法实践了!
#7
不好意思,这几天才把数据导进去
数据量是1亿多条,我就一张表users,一个字段username(主键)
现在要把这些数据导成多个文本文件,按照一楼的意思我写成这样执行:
sool d:\d.txt
set heading off
set feedback off
select username from users where rownum<10000;
spool off;
将上面的代码在sql plus上执行
后来我发现有几个问题:
第一:select username from users where rownum<10000;与select username from users where rownum<100;这两条语句查出来的前一百条数据根本上就对不上,不是一样的,也就是说到时我循环导出时,修改rownum<10000中值的大小时,这样导出来的数据有可以是重复的;
第二:这个循环怎么写啊,生成不同的文件
5楼的那些语句能不能做个注释啊?看不懂
#8
刚没仔细看,觉得挺吓人的,仔细看了一下,还是看懂了。。。
这个循环,我电脑不会卡死吧?我还不敢执行
这个循环,我电脑不会卡死吧?我还不敢执行
#9
L_FILENO 的默认值应该是0吧。