-2

我是 MySQL 的新手,我想从 bash 脚本中插入一些东西。从谷歌找到了一些方法,它适用于简单的命令 select * from foo 但它不适用于我的插入。

#!/bin/bash

qry="INSERT INTO  `video`.`asdf` (`DB_ID` , `LNX_ID` , `STIME` , `ETIME` , `TEXT` ) VALUES ( NULL , '5', '00:00:41.900', '00:00:49.600', 'Na leteckej v23423.');"

mysql --host=localhost --database 'video' --user=user --password=password << eof
$qry
eof

非常感谢。

4

1 回答 1

1

在没有看到错误消息的情况下,立即假设 bash 正在尝试在反引号内执行命令,因为您已将分配给的字符串用双引号引起来qry,并且找不到命令video,例如,它会打印错误。

$ echo "This will show the date if I do `date` in backticks"
> This will show the date if I do Sat Jun 29 22:09:59 CDT 2013 in backticks

在双引号字符串内使用反斜杠转义反引号,以防止 bash 尝试评估它们。

qry="INSERT INTO  \`video\`.\`asdf\` (\`DB_ID\` , \`LNX_ID\` , \`STIME\` , \`ETIME\` , \`TEXT\` ) VALUES (    NULL , '5', '00:00:41.900', '00:00:49.600', 'Na leteckej v23423.');"

但是,您的列名和表名都不是保留关键字,因此根本不需要引用。

qry="INSERT INTO  video.asdf (DB_ID , LNX_ID , STIME , ETIME , TEXT) VALUES (NULL , '5', '00:00:41.900', '00:00:49.600', 'Na leteckej v23423.');"

另一种选择是在外部字符串上使用单引号,但这需要非常笨拙的引用来维护插入的列值上的单引号,如此处所述

于 2013-06-30T03:02:06.630 回答