SQL を使用して SQL スクリプトを生成できることをご存知ですか? (これは、教員がステージングと本番で同じ教員 ID を持っている場合にのみ機能します)
これにより、新しい学部を挿入するスクリプトが生成されます。
SELECT 'INSERT INTO production.Faculty (faculty_id, name, comment)
SELECT TOP 1 '+LTRIM(faculty_id)+','''+name+''','''+comment+'''
FROM production.Faculty
WHERE NOT EXISTS (SELECT 1 FROM production.Faculty WHERE faculty_id = '+LTRIM(faculty_id)+');' AS runMeOnProduction
FROM staging.Faculty
これにより、既存の学部を更新するためのスクリプトが生成されます。
SELECT 'UPDATE production.Faculty SET name = '''+name+''', comment = '''+comment+'''
WHERE faculty_id = '+LTRIM(faculty_id)+';' AS runMeOnProduction
FROM staging.Faculty
名前またはコメント フィールドに引用符が含まれている場合は、上記の SQL ステートメントの名前とコメントを次のように置き換えます。
REPLACE(name,'''','''''')
REPLACE(comment,'''','''''')
特に、両方の環境で両方のテーブルで挿入と更新を行う場合、これは最善の方法ではありません。しかし、教員のデータがステージングでのみ増加している場合、これは機能します。
また、一部のクエリ ソフトウェアでは、これらの SQL ステートメントを実行すると、文字列が長すぎて表示できないと判断され、blob または一部の 16 進数が表示されます。それ以外の場合は、別の SQL クエリ ツールを試してください。私はこの種のものにDBVisualiserを使用していますが、うまくいきます。私は特定の DB クエリ ツールを宣伝しているわけではありません。mySQL と MSSQL を頻繁にクエリする必要があるため、仕事を完了するためにアプリからアプリへとジャンプしていることに気づきました。
両方の環境にデータ エントリがある場合は、適切なデータ比較ツールの使用を検討する必要があり
ます。
これはおそらく奇抜な考え方ですが、以前は便利だと思っていました...