我试图让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',&#39 ; 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)"]]
导致错误:第1行的ERROR 1054(42S22):未知列' my_date'在'字段列表'
希望有一些方法可以在这个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)"
提前感谢您提供任何急需的帮助!
答案 0 :(得分:2)
好的 - 最后通过使用字符串连接解决了这个问题:
my_command = 'mysql --host=1.1.1.1 --port=3308 --user=username --password=password db -e "insert into table (RecordDate, RecordMilliseconds, data1, data2, data3) values ('..variable1..','..variable2..',')" etc.
然后我只使用
os.execute(my_command)
这项工作是否正常,尽管可能有更优雅的方式。