需要帮助使用os.execute来执行mysql插入

时间:2014-03-25 16:56:01

标签: mysql lua

我试图让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)"

提前感谢您提供任何急需的帮助!

1 个答案:

答案 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)

这项工作是否正常,尽管可能有更优雅的方式。