通过Python转换数据类型并加载到MySQL中
除了使用 LOAD DATA INFILE
命令,还有其他方法可以将包含三列的 .txt 文件读入 MySQL 吗?我想逐行读取数据,并把它们放到 MySQL 的一个表里。
在下面的 LOAD DATA INFILE
命令中,数据类型是不可以转换的,对吧?
LOAD DATA INFILE 'filename' INTO TABLE info (col1, col2, col3)
我的数据样本是这样的:
123456.123455 dsfd wqoe
123455.123237 dert 2222
098878.938475 lkjf 2346
所以在我把数据加载到 MySQL 之前,我需要把第一列从 Unix 时间转换成日期时间,因为 MySQL 中第一列的数据类型是 DATETIME
,我想用 FROM_UNIXTIME
来解决这个问题。但是我该如何在 FROM_UNIXTIME(fieldname)
这个 MySQL 命令中使用 Python 变量作为 fieldname
呢?
更新:
这是我的解决方案
我在 video
表中有三列,分别是 datetime, src_ip, video_id
。
问题是,@unixtime 变量只能保存一个值,对吧?因为现在我在 MySQL 中的第一列都是一样的,可能它等于最后一个结果……我该如何解决这个问题?
insertQuery = "LOAD DATA LOCAL INFILE 'all-filter.txt' INTO TABLE video (@unixtime, src_ip, video_id); UPDATE video SET datetime=FROM_UNIXTIME(@unixtime)"
1 个回答
1
我试过以下的方法,这个方法有效:
create table info (s datetime not null primary key, str varchar(100), str2 varchar(100));
load data local infile '/home/maartenl/sample.txt'
into table info (@s, str, str2)
set s = from_unixtime(@s);
这个方法在你的样本数据上运行得很好。