sql >> データベース >  >> RDS >> Sqlserver

VS 2012 の SQL Server データベース プロジェクトに静的データを保存する方法

    このアプローチを使用できます:

    • 参照データをテーブルごとに 1 つの XML ファイルに入れる
    • 参照データを含む XML ファイルをデータベース プロジェクトに追加する
    • 配置後スクリプトを使用して XML からデータを抽出し、テーブルにマージします

    ここでは、例を示しながら、各ステップのより詳細な説明を示します。この構造を持つ国のテーブルを初期化する必要があるとしましょう:

    create table Country (
        CountryId uniqueidentifier NOT NULL,
        CountryCode varchar(2) NOT NULL,
        CountryName varchar(254) NOT NULL
    )
    

    ReferenceData という新しいフォルダーを作成します。 データベース プロジェクトの下。 Schema Objects の兄弟フォルダーである必要があります および Scripts .

    Country.xml という新しい XML ファイルを追加します。 ReferenceData に フォルダ。次のようにファイルに入力します:

    <countries>
        <country CountryCode="CA" CountryName="Canada"/>
        <country CountryCode="MX" CountryName="Mexico"/>
        <country CountryCode="US" CountryName="United States of America"/>
    </countries>
    

    Script.PostDeployment.sql を探します に次のコードを追加します:

    DECLARE @h_Country int
    
    DECLARE @xmlCountry xml = N'
    :r ..\..\ReferenceData\Country.xml
    '
    
    EXEC sp_xml_preparedocument @h_Country OUTPUT, @xmlCountry
    
    MERGE Country AS target USING (
        SELECT c.CountryCode, c.CountryName
        FROM OPENXML(@h_Country, '/countries/country', 1)
        WITH (CountryCode varchar(2), CountryName varchar(254)) as c) AS source (CountryCode, CountryName)
    ON (source.CountryCode = target.CountryCode)
    WHEN MATCHED THEN
        UPDATE SET CountryName = source.CountryName
    WHEN NOT MATCHED BY TARGET THEN
        INSERT (CountryId, CountryCode, CountryName) values (newid(), source.CountryCode, source.CountryName)
    ;
    

    このソリューションは VS 2008 でのみ試しましたが、開発環境にとらわれないはずです。




    1. PL / SQL:明示カーソルを参照カーソルに変換しますか?

    2. ランニング乗算の計算方法

    3. WindowsAzureからリモートSQLServer2008に接続する

    4. SQLServer全文検索から単語の頻度を取得する