2017-05-12 5 views
3

私はphpコードを持っています.sqlファイルをmysqlデータベースにインポートするために使用しています。コードが最初に行うことは、ファイルをチェックすることです。存在する場合は、いくつかのテーブルを削除し、SQLファイルをインポートします(削除されたテーブルを置き換えます)。あなたが想像することができるように、SQLファイルが無効だったが、コードが行進してテーブルを落とした。 PHPを使用してSQLファイルの妥当性を検証する方法はありますか?使用する前にSQLファイルを確認してください

これにはいくつかの理由でいくつかの自動化が必要です。私はいつも輸入しているわけではありません。インポート後、コードは直ちに新しいテーブルを使用して、他のテーブルのレコードを更新/作成/削除します。だから私はそれが成功かどうかをチェックするプロセスを停止するワークフローを持つことはできません。 PHPが成功を確認する方法が必要です。

$templine = ''; 
$lines = file($filename); 
foreach ($lines as $line) { 
    if (substr($line, 0, 2) == '--' || $line == '') continue; 
    $templine .= $line; 
    if (substr(trim($line), -1, 1) == ';') { 
     $wpdb->query($templine); 
     $templine = ''; 
    } 
} 
+0

代わりに、最初にテーブルを削除するだけで、新しいテーブルを別の名前で作成しようとすることはできませんでしたか?それが成功した場合は、ドロップして名前を変更します。それ以外の場合は、ファイルが不良です。 – j08691

+0

提案していただきありがとうございます。なぜ私の現在の状況のた​​めにこれがうまくいかないのかを含めるように質問を更新しました。 –

+0

@ModusPonen手動でチェックするのを止めることなく、彼と私の提案の両方を行うことができます。コードは、存在すると期待されている行に対してクエリを実行し、結果に基づいてコードが応答するようにします。 – Goose

答えて

0

興味深い:

この

は、SQLファイルをインポートするために使用されているコードです。私は2つの方法を考えることができます。

1つの方法として、テストとして使用する代替データベースを用意し、そのデータベースに接続し、SQLをこのデータベースにインポートしてから、クエリで機能することを確認します。それが合格したら、メインデータベースに接続し、通常どおりに進めてください。

別のアプローチは、既存のデータベースをSQLファイルにエクスポートすることです。 sqlファイルをインポートした後、クエリで動作するかどうかを確認し、そうでない場合は、エクスポートされたsqlファイルで古いデータベースをインポートします。

これらのすべてを1ステップで実行するように自動化することができます。

+0

これは、この提案とj08691のテーブルの名前を変更してインポートを実行し、新しいテーブルが存在するかどうかを確認し、名前が変更されたテーブルを削除します。テーブルは元の状態に戻ります。ありがとう。 –

関連する問題