通过Python转换数据类型并加载到MySQL中

0 投票
1 回答
785 浏览
提问于 2025-04-17 07:32

除了使用 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);

这个方法在你的样本数据上运行得很好。

撰写回答