• 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 应该也可以分割,记不太清了。

  • 相关阅读:
    Elasticsearch部分节点不能发现集群(脑裂)问题处理
    最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)
    最新阿里云申请免费SSL证书实现网站HTTPS化(图文教程一)
    小程序开发-Now you can provide attr "wx:key" for a "wx:for" to improve performance
    Vue登录注册
    vue的成绩判断
    React路由简单介绍
    TodoList增删改查
    React组件简单介绍
    es6 Class类的使用
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/9769777.html
Copyright © 2020-2023  润新知