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

我有一个文本文件,每行都有序列号,例如:

7656393835734594
8457457435983945
3489534689856950
4596859684560498

我想使用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");

此代码不执行任何操作,更不用说添加数据和时间戳了。

iCMS 回答:将文本文件加载到mysql数据库中,并将时间戳记添加到每一行

我认为最简单的方法是为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
,

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

mysqli_options($conn,MYSQLI_OPT_LOCAL_INFILE,true);

检查服务器设置是否具有

local_infile=ON

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

本文链接:https://www.f2er.com/2266046.html

大家都在问