• sql脚本长度限制及linux下文件切分


       无意翻出以前笔记,切分sql文件,每10万条加一个commit。半天都想不起来应用的场景,能想起来的再加上查的资料记录一下。

       在Oracle数据库中,频繁的commit会引起大量Redo Log的物理I/O,会极大的限制数据库的性能。因此,为提高数据库性能,尽可能的批量提交。

       Could not execute JDBC batch update,最后发现原因是SQL语句长度大于1M,mysql通讯的数据包大小设置是1M,这就造成sql语句执行失败。

               把mysql的配置文件(my.ini)中的max_allowed_packet = 6M变大,就可以顺利执行。

               Oracle IN 子句中的LIST个数最长为1000,超过该数目将报错,这里可转用一个临时表来解决。单条sql语句长度和mysql一样,也有长度的限制。

               使用split命令可以完成文件的切分。

       1)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。命令:

    $ split -b 20m splitTest.txt
    $ ls
    splitTest.txt  xaa  xab  xac

        2)将文件splitTest.txt分割成多个文件,分割后的每个文件大小为10M。指定分割后的文件前缀位split,命令:

    $ split -b 20m splitTest.txt  split
    $ ls
    splitaa  splitab  splitac  splitTest.txt

             3)将文件splitTest.txt分割成多个文件,每个文件50万行。命令:

    $ split -l 500000 splitTest.txt  split
    $ ls
    splitaa  splitab  splitac  splitad  splitTest.txt

             4)将文件splitTest.txt分割成多个文件,每个文件50万行。指定分割后的文件后缀为数字,数字位数为3位,命令:

    $ split -l 500000 -d -a 3 splitTest.txt  split
    $ lssplit000 split001 split002 split003 splitTest.txt

      可以使用cat命令将切分后的文件合并成新的文件:

    $ cat split0* > original.txt

      用head -n 1,100 >>xx.txt 应该也可以分割,记不太清了。

  • 相关阅读:
    一只iPhone的全球之旅
    iOS开发之在地图上绘制出你运行的轨迹
    iOS开发之一些字符串常用的代码
    json格式化和查看工具
    iOS开发之结合asp.net webservice实现文件上传下载
    更改GROOVE的文件夹位置
    调试Windows Service
    从数据库中获取Insert语句
    iOS开发学习笔记(一)
    《影响力》的影响
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/9769777.html
Copyright © 2020-2023  润新知