我们正在从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。
在达到500GB大小后,假脱机文件ABC.csv的生成终止。
我们怀疑ABC.csv的最终大小将远远超过500GB。
请建议一种在假脱机过程中压缩数据的方法。
我应该首先从oracle表创建一个压缩的临时表,然后将其假脱机吗?
CREATE TABLE XXX COMPRESS FOR QUERY AS SELECT * FROM ABC;
答案 0 :(得分:1)
您的问题可能是因为您使用set linesize 32000而不是修剪来引入TON的尾随空格。
在假脱机命令之前将其添加到脚本中:
set trimspool on
根据提取的数据列数和大小,这可以显着减少文件大小。
另外,您可能想要更改为设置colsep'|' (没有双引号),只要确保你提取的数据也不包含管道(或使用其他分隔符)
答案 1 :(得分:1)
我修改了我的代码如下,现在工作正常:
mknod ../Temp/ABC.csv p
nohup gzip -c < ../Temp/ABC.csv > ../Files/ABC.gz &
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
set trimspool on
spool ./Temp/ABC.csv
Select COLUMN1,COLUMN2 from ABC;
spool off
EOF
答案 2 :(得分:0)
假设您定义script.sh
的脚本名为script.sh | gzip > data.csv.gz
。不是
spring.data.mongodb.uri: mongodb://localhost:27017/measurements-db
你在找什么?