为了账号安全,请及时绑定邮箱和手机立即绑定

将文本文件加载到mysql数据库中并为每一行添加时间戳

将文本文件加载到mysql数据库中并为每一行添加时间戳

PHP
富国沪深 2023-04-21 13:17:13
我有一个文本文件,每一行都有序列号,例如:7656393835734594845745743598394534895346898569504596859684560498我想使用 PHP 将此文本文件添加到 mysql 表中。我的桌子看起来像这样:serials table    id           bigint(20) auto_increment    serial       varchar(16)        timestamp    timestamp如何将文本文件中的每一行添加到序列列中,并将当前时间戳添加到每一行?这是我已经尝试过的:$file = "serials.txt";$conn = mysqli_connect('localhost','root','root');mysqli_select_db($conn, 'myDB');mysqli_query($conn, "LOAD DATA INFILE '".$file."' INTO TABLE serials");此代码不执行任何操作,更不用说添加数据和时间戳了。
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我认为最简单的方法是为列定义一个default值timestamp:


create table serials (

    id bigint primary key auto_increment,

    serial varchar(16),

    ts timestamp default current_timestamp

)

请注意,我将时间戳列重命名为某个与语言关键字不冲突的名称。


然后您可以使用load data语法。重要的是您需要提供列列表,因为并非所有表列都为插入提供:


load data infile 'myfile.txt' into table serials(serial)

另一方面,如果由于某种原因不能修改表定义,另一种方法是使用子句set提供派生值:


load data infile 'myfile.txt' into table serials(serial)

set ts = current_timestamp


查看完整回答
反对 回复 2023-04-21
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

如果文件是连接脚本的本地文件,它应该LOAD DATA INFILE LOCAL在连接之前:

mysqli_options($conn, MYSQLI_OPT_LOCAL_INFILE, true);

检查服务器设置有:

local_infile=ON

或者,如果您希望服务器加载文件,secure_file_priv需要是文件所在的路径。


查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信