在使用Mysql加载数据本地填充时获取整行

在使用Mysql加载数据本地填充时获取整行,mysql,stored-procedures,Mysql,Stored Procedures,需要专家帮助,以获得整个原始行使用负载数据本地填充,并把我的db列 样品 表格 DROP TABLE IF EXISTS `syslog`; CREATE TABLE `syslog` ( `the_time` VARCHAR(80) NOT NULL, `the_key` VARCHAR(30) NOT NULL, `the_log` VARCHAR(1024) NOT NULL ) ENGINE = MyISAM; 文件:D:/rnd/syslog.csv "device","

需要专家帮助,以获得整个原始行使用负载数据本地填充,并把我的db列

样品 表格

DROP TABLE IF EXISTS `syslog`;
CREATE TABLE `syslog` (
  `the_time` VARCHAR(80) NOT NULL,
  `the_key` VARCHAR(30) NOT NULL,
  `the_log` VARCHAR(1024) NOT NULL
)
ENGINE = MyISAM;
文件:D:/rnd/syslog.csv

"device","date_time","src_ip","dst_ip","log_type","message"
"Fortigate","2012-05-02 12:02:03","192.168.1.1","192.168.1.11","vpn","Sample message1"
"Fortigate","2012-05-02 12:02:04","192.168.1.2","192.168.1.12","vpn","Sample message2"
"Fortigate","2012-05-02 12:02:05","192.168.1.3","192.168.1.13","traffic","Sample message3"
"Fortigate","2012-05-02 12:02:06","192.168.1.4","192.168.1.14","traffic","Sample message4"
"Fortigate","2012-05-02 12:02:07","192.168.1.5","192.168.1.15","vpn","Sample message5"
"Fortigate","2012-05-02 12:02:08","192.168.1.6","192.168.1.16","vpn","Sample message6"
Mysql语句

SET @delimeter = ",";
LOAD DATA LOCAL INFILE
"D:/rnd/syslog.csv"
INTO TABLE syslog
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
( @device,
  @date_time,
  @src_ip,
  @dst_ip,
  @log_type,
  @message) 
SET the_time = @date_time, 
the_key=CONCAT(@src_ip, "~" , @dst_ip), 
the_log=CONCAT(@device,@delimeter,@date_time,@delimeter,@src_ip,@delimeter,@dst_ip,@delimeter,@log_type,@delimeter,@message);
目前正在使用手动设置,如

the_log=CONCAT(@device,@delimeter,@date_time,@delimeter,@src_ip,@delimeter,@dst_ip,@delimeter,@log_type,@delimeter,@message)
由于实际列为60,在代码内部手动执行不是一个好主意,而且以后不容易维护,因此是否有其他方法可以获取整行内容

  • 目标:使用csv数据并将其处理到我自己的表中(意味着列与csv不同)

另一种方法是将表结构创建为CSV文件,按原样存储数据,并且仅当您从日志表中选择数据时才使用CONCAT。

这是我的最后一种选择,因为我需要更快地处理数据