我在 Amazon Web Services EC2 的实例上使用 Oracle 12c 。
我想将数据从一个带有5M记录的Oracle表导出到CSV格式的本地文件夹。
是否有一个脚本或程序可以在Redhat / bash环境中快速完成?
我正在寻找最小的安装和设置。
答案 0 :(得分:1)
你想快点吗?简单的SPOOL SQLPlus命令怎么样?您可以使用不同的SET命令(在SQLPlus命令提示符下键入HELP SET)使其更漂亮,但一般的想法如下:
SQL> set colsep ','
SQL> spool emp.csv
SQL> select employee_id, first_name, last_name
2 from employees
3 where rownum < 5;
EMPLOYEE_ID,FIRST_NAME ,LAST_NAME
-----------,--------------------,-------------------------
100,Steven ,King
101,Neena ,Kochhar
102,Lex ,De Haan
103,Alexander ,Hunold
SQL> spool off;
SQL> $type emp.csv
SQL> select employee_id, first_name, last_name
2 from employees
3 where rownum < 5;
EMPLOYEE_ID,FIRST_NAME ,LAST_NAME
-----------,--------------------,-------------------------
100,Steven ,King
101,Neena ,Kochhar
102,Lex ,De Haan
103,Alexander ,Hunold
SQL> spool off;
SQL>
[在看到OP的评论后由LF编辑]
好的,因为你没有采取这种努力并检查SET提供的内容,现在就去:如果你想得到一个干净的输出(没有标题,下划线,SELECT命令等),创建一个SQL file(让它命名为SP.SQL):
SET ECHO OFF
SET VERIFY OFF
SET TRIMSPOOL ON
SET TRIMOUT ON
SET LINESIZE 9999
SET PAGESIZE 0
SET FEEDBACK OFF
SET TIMING OFF
SET TIME OFF
SET COLSEP ','
SPOOL emp.csv
SELECT employee_id, first_name, last_name
FROM employees
WHERE rownum < 5;
SPOOL OFF
现在连接到SQLPlus并运行该脚本:
SQL> @sp
100,Steven ,King
101,Neena ,Kochhar
102,Lex ,De Haan
103,Alexander ,Hunold
SQL>
最后,如果你看一下EMP.CSV,你会发现它很干净。
满意?