将当前时间加载到 mysql 数据库

将当前时间加载到 mysql 数据库

我有一个查询可以将数据输入到 mysql 数据库中。但是,我还想输入条目的时间,并且输入的时间应与服务器时间相对应。我使用的是 Ubuntu Server 12.04 LTS,下面是我用来将数据输入表格的代码(它嵌入在脚本中)

mysql -uroot -pmysql --local-infile database -e"LOAD DATA LOCAL INFILE A.txt INTO TABLE TABLEA columns terminated by '|'"

我创建了包含 3 列的表,其中一列表示时间,数据类型标记为时间戳。我如何编辑代码以便它也可以插入本地时间。我使用的是 LAMP 堆栈。进一步说明一下,如果我的表填充了以下内容

> ip                                    mac                       time
> 10.0.0.97                        00 14 2A 2F 72 FE          2012-09-09 23:11:05

我的文本文件包含数据

10.0.0.97|00 14 2A 2F 72 FF
 10.0.0.98|00 21 33 RT W3 TT

现在我运行该脚本,我希望它在数据库中显示为

> ip                                      mac                        
> time
> 10.0.0.97                           00 14 2A 2F 72 FE           2012-09-09 23:11:05
> 10.0.0.97                           00 14 2A 2F 72 FF           2013-18-09 16:11:11
> 10.0.0.98                           00 21 33 RT W3 TT           2013-18-09 16:11:11

答案1

您可以按照与 LOAD INFILE 相同的方式执行此操作:

mysql -uroot -pmysql 
-e "update database.TABLEA set `time`=now() where `time` IS NULL or `time` = '';"

将更改 TABLEA 并将time所有记录设置为 now(),其中timeIS NULL 或为time空(因为您没有提供文件的时间戳,这只会改变新记录。

如果需要更改较少的记录,请添加“where”。或者,time如果字段为 NULL 或文本文件中的记录具有的实际键,则添加类似“where IS NULL”的内容。

另外2种方法:

  1. 当然,您也可以通过将时间戳添加到您上传的文本文件中来提供时间戳。

  2. 您还可以编辑表格本身并添加当前时间戳默认为表中的一列(!)。

顺便说一句:请不要使用此方法提供密码。它将显示在您的进程列表中,因此所有人都可以查看。有关此内容的更多信息,请参阅官方 MySQL 手册 6.1.2.1. 最终用户密码安全指南

相关内容