[英]Running SQL scripts to PostgreSQL using PHP/PDO
我需要對數據庫運行一些SQL腳本,以更新架構和數據(某種遷移)。
因為在運行每個腳本之前需要檢查一些邏輯,所以我寫了一個小的PHP工具來執行腳本,但是我有一個簡單的問題:我可以加載並執行“簡單的” SQL腳本(包括表操作,觸發器和存儲過程更新),還是應該在腳本中添加標記(以標記每個句子的結尾),然后逐句運行腳本?
對於數據庫訪問,我正在使用PDO。
我今天也有類似情況。
我的解決方案非常簡單,但是足夠聰明,可以使用跨越多行的注釋和語句。
// open script file
$scriptfile = fopen($script_path, "r");
if (!$scriptfile) { die("ERROR: Couldn't open {$scriptfile}.\n"); }
// grab each line of file, skipping comments and blank lines
$script = '';
while (($line = fgets($scriptfile)) !== false) {
$line = trim($line);
if(preg_match("/^#|^--|^$/", $line)){ continue; }
$script .= $line;
}
// explode script by semicolon and run each statement
$statements = explode(';', $script);
foreach($statements as $sql){
if($sql === '') { continue; }
$query = $pdo->prepare($sql);
$query->execute();
if($query->errorCode() !== '00000'){ die("ERROR: SQL error code: ".$query->errorCode()."\n"); }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.