将数据从Oracle导出到CSV

时间:2017-12-18 20:18:32

标签: oracle amazon-web-services

我在 Amazon Web Services EC2 的实例上使用 Oracle 12c

我想将数据从一个带有5M记录的Oracle表导出到CSV格式的本地文件夹。

是否有一个脚本或程序可以在Redhat / bash环境中快速完成?

我正在寻找最小的安装和设置。

1 个答案:

答案 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,你会发现它很干净。

满意?