我正在使用Oracle的UTL_FILE
包来生成一些文件。文件名具有某种格式,例如<name>_<date>_<time>_<sequence>
,其中sequence
从000开始。
现在我想在原始文件大于x Mb时拆分文件。在这种情况下,我会得到(如果是2个文件):
<name>_<date>_<time>_001
<name>_<date>_<time>_002
其中001是10Mb(最大值),而002是<10Mb(最大值)。 10 Mb。
我看到这样做的唯一方法是计算将由UTL_FILE.put
命令写入的每行字节数,然后决定是写更多还是溢出。
这似乎是我非常耗费CPU的过程。
有没有办法在PL / SQL中以不同的方式执行此操作?
答案 0 :(得分:0)
我没有足够的徽章来评论。因此回答。
这很有趣也很有挑战性。但是你为什么只想在PL / SQL中这样做呢?您可以通过编写shell脚本轻松完成此任务。
我们说文件名是File1,大小是5.6GB。然后该文件应分成3个文件,文件的命名应为File1,File2,File3
您可以使用du -BG <file>
获取以GB为单位的尺寸。
size=$(du -BG your_file | cut -dG -f1)
然后
[ $size -ge 3 ] && split -d -b2G your_file file
输出为file00 file01