monetdblite:是不是可以配置“monetdb_query”来运行多个语句?
Posted
技术标签:
【中文标题】monetdblite:是不是可以配置“monetdb_query”来运行多个语句?【英文标题】:monetdblite: Is it possible to configure "monetdb_query" to run multiple statements?monetdblite:是否可以配置“monetdb_query”来运行多个语句? 【发布时间】:2019-01-22 10:54:39 【问题描述】:我正在尝试运行以下脚本
"create table T1(i int); create table T2(i int);"
在使用 MonetDBLite C 及其“monetdb_query”API 的全新数据库中,但“monetdb_query”函数似乎只执行第一条语句。
有什么方法可以一次运行整个脚本(点逗号分隔的有效语句)(最好是在同一个事务中)?
谢谢,
【问题讨论】:
【参考方案1】:据我所知,抱歉。不过很高兴审查 PR。主要问题是多个查询可能会产生多个结果集,这会使 API 变得非常复杂。但是,如果您所追求的只是执行并且您不关心结果,则可以通过一些小黑客来完成。尝试使用小写“s”作为最后一个参数调用monetdb_query_internal
。
【讨论】:
好像是不允许的。 sql_upgrades.c,第 1098 行if (be->language !='S') msg = createException(SQL, "SQLparser", SQLSTATE(42000) "Unrecognized language prefix: %ci\n", be->language); goto finalize;
甚至在我更改代码以将条件也传递给 's' 之后,仍然无法正常工作。我想上述情况是有原因的。
错误消息Unrecognized language prefix: Li
也可能是数据库仍处于维护模式的症状。要解决此问题,请运行 monetdb release <DATABASE_NAME>
,然后运行 monetdb start <DATABASE_NAME>
。以上是关于monetdblite:是不是可以配置“monetdb_query”来运行多个语句?的主要内容,如果未能解决你的问题,请参考以下文章
SQL 将许多 tsv 文件连接到数据库中的单个表中,同时跟踪文件源 (MonetDBLite)
从 MonetdbLite C API 使用 monetdb_append