现有的方式是写好sql语句,然后在plsql中查询出所需数据,然后在查询结果上右键导出,但这种方式不适合对数据量大的数据表进行操作,因为会超内存而且查询速度很慢。想做的就是跳过数据展示这个阶段直接进行导出所需数据(这个数据用到部分如substr或decode等函数对原有表进行了改变);
刚在写的时候想到一种方法,就是直接建个新表,create table as select ……,然后用exp直接导出这场表,之后再删掉该表。
但是还是觉得不很好,请教高人给与更直接的答案
å¯ç¨sqlplusçæ¹å¼
å å¨ææ件夹ä¸ï¼æå°±ç´æ¥ä»¥Cçæ ¹ç®å½ä¸ºä¾äºï¼
å建main.sqlæ件
å 容å¦ä¸
set linesize 200
set term off verify off feedback off pagesize 0
set head off
set trimout on
set trimspool on
spool aaa.txt
@export.sql
spool off
exit
å ¶ä¸aaa.txtæ¯ä½ è¦ä¿åçæ件åï¼è¿éè²ä¼¼ä¸è½å¯¼æexcelï¼åªå¯ä»¥ä¿åæcsvæ ¼å¼ï¼ç¶åä½ åèªå·±è½¬æ¢å§ï¼ææ¬æ¯æ²¡é®é¢çï¼å ¶ä¸@export.sql æ¯å¦ä¸ä¸ªæ件ï¼å 容å¦ä¸
ä½ è¦æ³ææ°æ®å¯¼æ以éå·åé
èæ¬è¿ä¹å
æå°±ç®å以emp表为ä¾äºï¼ä¹æ¯ç¨çto_charå½æ°ï¼åªè¦è¯å¥åæ£ç¡®å°±OK
select empno||','||to_char(hiredate,'yyyy-mm-dd') from emp;
ç»å°¾å¿ é¡»ç¨åå·
æè¿ä¸ªä¿åæexport.sqlæ件
ç¶åcmdè¿å°ä½ è¦æ§è¡çæ件夹ä¸
sqlplus ç¨æ·å/å¯ç @main
ç¶åæ éççå¾ ï¼çå°æä½ çæ件导æ
ä½ å°æ¥è¦æ¯è¦ææä»¶å¯¼å ¥å°åªçè¯ï¼å¯ä»¥ç¨sqlloader
è¿ä¸ªç½ä¸æç¨å¾å¤
åï¼æåè¿ä¸ªç´¯å追é®
å å¨ææ件夹ä¸ï¼æå°±ç´æ¥ä»¥Cçæ ¹ç®å½ä¸ºä¾äºï¼
å建main.sqlæ件
å 容å¦ä¸
set linesize 200
set term off verify off feedback off pagesize 0
set head off
set trimout on
set trimspool on
spool aaa.txt
@export.sql
spool off
exit
å ¶ä¸aaa.txtæ¯ä½ è¦ä¿åçæ件åï¼è¿éè²ä¼¼ä¸è½å¯¼æexcelï¼åªå¯ä»¥ä¿åæcsvæ ¼å¼ï¼ç¶åä½ åèªå·±è½¬æ¢å§ï¼ææ¬æ¯æ²¡é®é¢çï¼å ¶ä¸@export.sql æ¯å¦ä¸ä¸ªæ件ï¼å 容å¦ä¸
ä½ è¦æ³ææ°æ®å¯¼æ以éå·åé
èæ¬è¿ä¹å
æå°±ç®å以emp表为ä¾äºï¼ä¹æ¯ç¨çto_charå½æ°ï¼åªè¦è¯å¥åæ£ç¡®å°±OK
select empno||','||to_char(hiredate,'yyyy-mm-dd') from emp;
ç»å°¾å¿ é¡»ç¨åå·
æè¿ä¸ªä¿åæexport.sqlæ件
ç¶åcmdè¿å°ä½ è¦æ§è¡çæ件夹ä¸
sqlplus ç¨æ·å/å¯ç @main
ç¶åæ éççå¾ ï¼çå°æä½ çæ件导æ
ä½ å°æ¥è¦æ¯è¦ææä»¶å¯¼å ¥å°åªçè¯ï¼å¯ä»¥ç¨sqlloader
è¿ä¸ªç½ä¸æç¨å¾å¤
åï¼æåè¿ä¸ªç´¯å追é®
æåè¾å ¥ sqlplus ç¨æ·å/å¯ç @mainæé®é¢å§ï¼ä¼åºç°ora-12154çé误ï¼è¯·ææä¹è§£å³ã
追çæ误äº
sqlplusç¨æ·å/å¯ç @å®ä¾å @c:/main.sql
注æå®ä¾åå@cä¸é´æç©ºæ ¼ï¼åæ@mainæ件å没åå
¨
温馨提示:答案为网友推荐,仅供参考