Mysql 在插入表之前应用regex从.csv加载数据

Mysql 在插入表之前应用regex从.csv加载数据,mysql,sql,regex,shell,csv,Mysql,Sql,Regex,Shell,Csv,我知道有一个将.csv数据导入mysql表的代码,我正在使用这个代码: LOAD DATA INFILE "file.csv" INTO TABLE foo FIELDS TERMINATED BY "," LINES TERMINATED BY "\\r\\n"; 此.csv中的数据是类似以下示例的行: 08/e0/Breast_Cancer_Res_2001_Nov_2_3(1)_55-60.tar.gz Breast Cancer Res. 2001 Nov 2; 3(1):55-60

我知道有一个将.csv数据导入mysql表的代码,我正在使用这个代码:

LOAD DATA INFILE "file.csv" INTO TABLE foo FIELDS TERMINATED BY "," LINES TERMINATED BY "\\r\\n";
此.csv中的数据是类似以下示例的行:

08/e0/Breast_Cancer_Res_2001_Nov_2_3(1)_55-60.tar.gz Breast Cancer Res. 2001 Nov 2; 3(1):55-60 PMC13900
b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz Breast Cancer Res. 2001 Nov 9; 3(1):61-65 PMC13901
我只希望第一部分(即.tar.gz路径)始终在模式上

(letter or number)(letter or number) / (letter or number)(letter or number)/...
PMC(number...)
以“PMC”开头的部分,始终在模式上

(letter or number)(letter or number) / (letter or number)(letter or number)/...
PMC(number...)
其中“数字”指0到9之间的数字 字母是指a到z之间的字母(大写和小写)

因此,应用加载数据和正则表达式,并在我的sql表中插入结果项,结果表应该是:

1      08/e0/Breast_Cancer_Res_2001_Nov_2_3(1)_55-60.tar.gz     PMC13900
2      b0/ac/Breast_Cancer_Res_2001_Nov_9_3(1)_61-65.tar.gz     PMC13901

SQL命令应该是什么来完成这一切呢?

我用你的两行代码做了一个测试

create table mytest(
id int not null auto_increment primary key,
descr varchar(250),
code varchar(50)
) engine = myisam;

load data infile 'E:\file.txt'
into table mytest 
fields terminated by ';'
ignore 1 lines
(@descr,@code)
set descr = substring(@descr,1,locate('tar.gz',@descr)+5),
code = substring(@code,locate('PMC',@code))

希望它能有所帮助

@nick文件路径正常,但PMCID没有问题。@code变量的结果是:“3(1):55-60 pmc1390”非常奇怪。你能上传一个带有一些行的示例文件吗?@nick请忽略第一行(我正在手动删除它。但是,如果可以,请添加到sql代码?)您好。我在代码中添加了忽略第一行的选项。在我看来,一切都很顺利。我已经上传给你我的表转储后,我加载了它@尼克:太谢谢你了,我无法回答。我会让我的朋友用你的编辑重新测试,看看是否有用。另外,感谢您访问转储数据库。我会回来告诉你更多的细节