LOAD DATA INFILE 可以接受 LINES STARTING BY 的正则表达式吗?
Can LOAD DATA INFILE accept regex for LINES STARTING BY?
我的文件格式:
-----------------------------------
| 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 Error [1064] [42000]: (conn:833) You have an error in your SQL
syntax; check the manual that corresponds to your MariaDB server
version for the right syntax to use near 'REGEXP '^\|\s*[[:digit:]]'
P.S.: 请注意我不能在这里使用 IGNORE x LINES
因为我的文件有重复的 header 行,为简单起见我没有在这里显示。
我认为不可能在 LOAD DATA
命令期间应用正则表达式或 where 过滤器。但是,您可以先读入所有行,然后再使用删除语句:
DELETE
FROM yourTable
WHERE NOT CCAr LIKE '1143%';
在 *nix 上,先关闭文件:
egrep '^1143' < in.txt > out.txt
LOAD DATA INFILE ... "out.txt" ...
我的文件格式:
-----------------------------------
| 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 Error [1064] [42000]: (conn:833) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'REGEXP '^\|\s*[[:digit:]]'
P.S.: 请注意我不能在这里使用 IGNORE x LINES
因为我的文件有重复的 header 行,为简单起见我没有在这里显示。
我认为不可能在 LOAD DATA
命令期间应用正则表达式或 where 过滤器。但是,您可以先读入所有行,然后再使用删除语句:
DELETE
FROM yourTable
WHERE NOT CCAr LIKE '1143%';
在 *nix 上,先关闭文件:
egrep '^1143' < in.txt > out.txt
LOAD DATA INFILE ... "out.txt" ...