【发布时间】:2017-04-29 20:24:11
【问题描述】:
我们正在从 Linux 服务器的 oracle 表中将数据假脱机到 CSV 文件中。
使用以下代码:
sqlplus -s Schema_User/Schema_Password@DB_Service <<EOF
set termout off
set heading off
set underline "_"
set pagesize 0 embedded on
set linesize 32000
set LONG 50000
set colsep '"|"'
set feedback off
spool ./Temp/ABC.csv
Select COLUMN1,COLUMN2 from ABC;
spool off
EOF
Linux 服务器 (df -h) 上的可用空间为 500GB。
spool 文件 ABC.csv 的生成在达到 500GB 大小后终止。
我们怀疑 ABC.csv 的最终大小将远远超过 500GB。
请提出一种我们可以在假脱机过程中压缩数据的方法。
我应该先从 oracle 表创建一个压缩的临时表,然后再进行假脱机吗?
CREATE TABLE XXX COMPRESS FOR QUERY AS SELECT * FROM ABC;
【问题讨论】:
-
如果您需要构建 CSV,压缩表如何帮助压缩生成的 CSV?一种方法是在某个表中构建您的 CSV,然后实施一些压缩算法来创建(例如)一个包含 CSV 的 ZIP 文件。另一种方法可能是将您的 CSV 拆分为更多文件,然后将它们连接起来。
-
我已修改代码以在假脱机期间压缩数据: mknod ./Temp/ABC.csv p sqlplus -s Schema_User/Schema_Password@DB_Service /tmp/out1.gz \& spool ./Temp/ABC。 csv 从 ABC 中选择 COLUMN1,COLUMN2;假脱机 EOF 但我需要 tar.bz2 格式的压缩文件,而不是 gz 格式的压缩文件。另外我不确定上述过程是否会影响数据。
-
sqlcl 进行自动 CSV 格式化,它还允许您运行 javascript,因此您可以使用它的变体来压缩进入假脱机的数据github.com/oracle/oracle-db-tools/commit/…
标签: linux oracle csv scripting oracle-export-dump