【发布时间】:2014-05-03 16:44:16
【问题描述】:
我正在尝试获取一个 lua 脚本来执行 MySQL 更新。
但是,与命令的 -e "" 部分一起使用的双引号使 lua(和我!)感到困惑。我已经尝试过多种引号组合,如下所示:
os.execute(""mysql --host=1.1.1.1 --port=3308 --user=username --password=password db -e "insert into table (RecordDate, RecordMilliseconds, data1, data2, data3) values ('111', '222', '333', '444', '555')""")
stdin:1: ')' expected near 'mysql'
os.execute("mysql --host=1.1.1.1 --port=3308 --user=username --password=password db -e "insert into table (RecordDate, RecordMilliseconds, data1, data2, data3) values ('111', '222', '333', '444', '555')" ")
stdin:1: ')' expected near 'insert'
任何想法我可以使用什么语法来允许 os.execute 使用这个 mysql 命令?
更新 - 好的,我可以使用 Egor 的 os.execute[[...]] 语法,但我现在需要能够用变量名替换这些示例值 '111'、'222' 等。当然,当我这样做时,它们可能会因为引号而被逐字解释。例如:
os.execute[[mysql --host=1.1.1.1 --port=3308 --user=username --password=password db -e "insert into table (RecordDate, RecordMilliseconds, data1, data2, data3) values (value1, value2, value3, value4, value5)"]]
这会导致错误:ERROR 1054 (42S22) at line 1: Unknown column 'my_date' in 'field list'
希望有一些方法可以从这个 os.execute[[mysql..."variable"]] 结构中引用变量名?也许使用|变量|语法?
显然在普通的 linux shell 中,这是比较容易实现的……
mysql --host=1.1.1.1 --port=3308 --user=username --password=password db -e "insert into table (RecordDate, data1) values ($my_timestamp, $value1)"
提前感谢您提供任何急需的帮助!
【问题讨论】:
-
实际上 - 看起来我可以使用 -e '' 作为 -e "" 的替代品。这对我来说在 os.execute("") 命令中工作正常。还是谢谢...
-
os.execute[[mysql --host=1.1.1.1 --port=3308 --user=username --password=password db -e "insert into table (RecordDate, RecordMilliseconds, data1, data2, data3) values ('111', '222', '333', '444', '555')"]] -
谢谢 Egor - 实际上,我还有一个问题。我需要用变量名替换这些示例值“111”、“222”等。当然,当我这样做时,它们可能会因为引号而被逐字解释。例如:
-
os.execute[[mysql --host=1.1.1.1 --port=3308 --user=username --password=password db -e "插入表(RecordDate, RecordMilliseconds, data1, data2, data3) 值 (value1, '222', '333', '444', '555')"]]
-
在第 1 行导致 ERROR 1054 (42S22):'field list' 中的未知列 'my_date'