首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Oracle中导出/假脱机大表到文件

如何在Oracle中导出/假脱机大表到文件
EN

Stack Overflow用户
提问于 2018-06-01 15:43:24
回答 2查看 1.1K关注 0票数 1

在Oracle中将大表(4300万条记录)导出/假脱机到单个文件的便捷方法是什么?

(一旦我们得到导出的文件,其目的是在Solaris中使用kshell运行的Shell脚本中处理它,但这是另一种历史记录)。

我们的第一次尝试生成了一个空文件:

代码语言:javascript
复制
SET   NEWPAGE       0;
SET   LINESIZE    169;
SET   PAGESIZE      0;
SET   VERIFY      OFF;
SET   TERMOUT     OFF;
SET   COLSEP       '';
SET   FEEDBACK    OFF;
SET   HEADING     OFF;

SPOOL THE_MONSTER_FILE.txt;

SELECT
    a.field1, a.field2, b.field1, b.field2
FROM
    tableA a, tableB b,
WHERE
    a.id = b.id(+);

SPOOL OFF;
COMMIT;
EXIT;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-03 03:28:18

可以将结果集导出到CSV文件中。创建一个shell脚本并让它在后台运行,如下所示:

代码语言:javascript
复制
#!/bin/bash
cat <<EOF > THE_MONSTER_SCRIPT.sql
SET COLSEP ;
SET HEADSEP OFF
SET VERIFY OFF
SET HEADING OFF
SET ECHO OFF
SET FEEDBACK OFF
SET LONG 2000000000
SET LINESIZE 1000
SET PAGESIZE 0
SET TRIMSPOOL ON

SPOOL THE_MONSTER_FILE.csv;

SELECT
    a.field1, a.field2, b.field1, b.field2
FROM
    tableA a, tableB b,
WHERE
    a.id = b.id(+);

SPOOL OFF

EXIT
EOF

nohup sqlplus system/password@INSTNAME @THE_MONSTER_SCRIPT.sql &

如果结果集中的任何列的值中都有列分隔符,则必须用双引号括起这些列,将列值中的双引号替换为两个双引号。示例:

代码语言:javascript
复制
/*
 * ----------------
 * | col1  | col2 |
 * ----------------
 * | a"a;a | aaa  |
 * | bbb;b | b"b  |
 * ----------------
 */

将会变成:

代码语言:javascript
复制
/*
 * "a""a;a";"aaa"
 * "bbb;b";"b""b"
 */
票数 0
EN

Stack Overflow用户

发布于 2018-06-01 15:52:17

在SSIS包的帮助下,您可以很容易做到这一点。

检查链接Here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50638463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档