LOAD DATA INFILE是否可以接受LINES STARTING BY的正则表达式?

时间:2019-08-08 06:49:53

标签: mysql sql mariadb load-data-infile

我的文件格式:

-----------------------------------
|  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,因为我的文件有重复的标题行,为简单起见,在此不再显示。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

在* nix上,首先对文件进行加密:

egrep '^1143'  < in.txt  > out.txt

LOAD DATA INFILE ... "out.txt" ...