我有一个查询可以将数据输入到 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(),其中time
IS NULL 或为time
空(因为您没有提供文件的时间戳,这只会改变新记录。
如果需要更改较少的记录,请添加“where”。或者,time
如果字段为 NULL 或文本文件中的记录具有的实际键,则添加类似“where IS NULL”的内容。
另外2种方法:
当然,您也可以通过将时间戳添加到您上传的文本文件中来提供时间戳。
您还可以编辑表格本身并添加当前时间戳默认为表中的一列(!)。
顺便说一句:请不要使用此方法提供密码。它将显示在您的进程列表中,因此所有人都可以查看。有关此内容的更多信息,请参阅官方 MySQL 手册 6.1.2.1. 最终用户密码安全指南