如何基于固定大小在PL / SQL中拆分文件

时间:2016-07-27 15:11:05

标签: oracle plsql

我正在使用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中以不同的方式执行此操作?

1 个答案:

答案 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

相关问题