【问题标题】:Can LOAD DATA INFILE accept regex for LINES STARTING BY?LOAD DATA INFILE 可以接受 LINES STARTING BY 的正则表达式吗?
【发布时间】:2019-12-15 19:36:54
【问题描述】:

我的文件格式:

-----------------------------------
|  CCAr|Next date |Cred. acct|
|---------------------------------|
|  1143|08/01/2019|123456789| 
-----------------------------------

我要加载到MariaDB 10.3 中的只有以 1143 开头的数据行

有没有办法,MariaDB 可以只加载以REGEXP '^\\|\\s*[[:digit:]]' 开头的行?

我尝试使用LINES STARTING BY REGEXP '^\\|\\s*[[:digit:]]',但出现以下错误:

SQL 错误 [1064] [42000]: (conn:833) 您的 SQL 中有错误 句法;检查与您的 MariaDB 服务器相对应的手册 在 'REGEXP '^\|\s*[[:digit:]]' 附近使用正确语法的版本

P.S.:请注意我不能在这里使用IGNORE x LINES,因为我的文件有重复的标题行,为了简单起见,我没有在这里显示。

【问题讨论】:

    标签: mysql sql mariadb load-data-infile


    【解决方案1】:

    我认为在 LOAD DATA 命令期间无法应用正则表达式或 where 过滤器。但是,您可以先读取所有行,然后再使用 delete 语句:

    DELETE
    FROM yourTable
    WHERE NOT CCAr LIKE '1143%';
    

    【讨论】:

      【解决方案2】:

      在 *nix 上,首先 clense 文件:

      egrep '^1143'  < in.txt  > out.txt
      
      LOAD DATA INFILE ... "out.txt" ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-15
        • 2021-11-10
        • 2017-06-29
        • 2023-01-05
        • 2011-03-05
        • 1970-01-01
        • 2021-06-20
        • 1970-01-01
        相关资源
        最近更新 更多