Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否可以在Sequel中批量更新?_Sql_Ruby_Batch File_Sequel - Fatal编程技术网

Sql 是否可以在Sequel中批量更新?

Sql 是否可以在Sequel中批量更新?,sql,ruby,batch-file,sequel,Sql,Ruby,Batch File,Sequel,是否可以使用在一次呼叫中进行多次更新 例如,在我的服务器上进行大约200次更新可能需要几分钟,但如果我伪造一个SQL查询,它将在几秒钟内运行。我想知道Sequel是否可以用来伪造SQL查询,或者甚至更好,一次完成整个操作。我遇到的解决方案涉及更新SQL方法。它不执行操作本身,而是输出原始SQL查询。要批量进行多个更新,只需将这些更新加入;在这两者之间,使用生成的字符串调用run方法,就完成了设置 批处理解决方案比多次更新快得多。您可以使用Datset\import “将多条记录插入关联的表中。如

是否可以使用在一次呼叫中进行多次更新


例如,在我的服务器上进行大约200次更新可能需要几分钟,但如果我伪造一个SQL查询,它将在几秒钟内运行。我想知道Sequel是否可以用来伪造SQL查询,或者甚至更好,一次完成整个操作。

我遇到的解决方案涉及更新SQL方法。它不执行操作本身,而是输出原始SQL查询。要批量进行多个更新,只需将这些更新加入;在这两者之间,使用生成的字符串调用run方法,就完成了设置

批处理解决方案比多次更新快得多。

您可以使用
Datset\import
“将多条记录插入关联的表中。如果数据库支持,此方法可用于在单个查询中高效地将大量记录插入表中。插入将自动包装在事务中。”

下面是一个如何使用它的示例:

DB = Sequel.connect(...)
DB[:movies].import([:id, :director, :title, :year], [[1, "Orson Welles", "Citizen Kane", 1941],[2, "Robert Wiene", "Cabinet of Dr. Caligari, The", 1920]])
数据集#更新
不适合您吗


是的,但这取决于您正试图做什么,以及您正在运行什么RDBMS。请提供更多信息,以便我们更好地为您提供建议。我正在使用PostgreSQL,我希望Sequel为多个更新发出一个查询,就像我在普通SQL中所做的那样。此解决方案只比“多个更新”更快,因为对于整组更新,您只需对数据库进行一次实际连接/访问,而不是一个一个。请注意,有些框架会自动执行这种行为——它们会将更新保存在内存中,直到提交事务为止。此外,如果可以将多个语句重新写入到一个语句中,您可能会获得更大的好处。在您的情况下,这可能是可行的,但并非所有Sequel适配器都支持数据库#run中的多个查询。Sequel实际上没有提供一个独立于适配器的方法,该方法在一个字符串中接受多个查询(一些适配器可以使用这样的字符串,其他的则不能)。对于mysql2驱动程序,在连接时必须使用{flags:::mysql2::Client::MULTI_STATEMENTS}作为选项