簡體   English   中英

使用PHP / PDO將SQL腳本運行到PostgreSQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM