gpt4 book ai didi

php - 在 Postgres 数据库上从 PHP (Kohana) 运行批处理 SQL 脚本的首选方式是什么

转载 作者:行者123 更新时间:2023-11-29 12:48:02 25 4
gpt4 key购买 nike

我正在为 Kohana 3.2 项目设置 Postgres 数据库测试。我想创建一个临时模式,从文件运行几个 sql 脚本来建立模式,然后进行测试,然后将临时模式放入 tearDown。

我试过使用 file_get_contents($sqlfilename) 然后使用 Kohana 的 DB:query() 获取脚本的内容,但那是 hack,无论如何都不能正常工作。

pg_execute 将不起作用,因为文件是批处理脚本

我应该用 exec() 运行 psql 命令吗?

从 PHP 在 Postgres 数据库上运行批处理脚本的最佳/首选方法是什么?

谢谢!!!

最佳答案

pg_query可以运行多个语句:

query

The SQL statement or statements to be executed. When multiple statements are passed to the function, they are automatically executed as one transaction, unless there are explicit BEGIN/COMMIT commands included in the query string. However, using multiple transactions in one function call is not recommended.

Data inside the query should be properly escaped.

因此,运行批处理脚本的一种 hacky 方法是:

pg_query($conn, "BEGIN; COMMIT;\n" . file_get_contents($filename));

我能想到的唯一正确的选择是将 psql 作为外部程序运行:

system("psql < " . escapeshellarg($filename));

我还没有测试过这两个。祝你好运。

关于php - 在 Postgres 数据库上从 PHP (Kohana) 运行批处理 SQL 脚本的首选方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com