sql >> Database >  >> RDS >> Sqlserver

Hoe slaat u statische gegevens op in uw SQL Server Database Project in VS 2012?

U kunt deze aanpak gebruiken:

  • Zet uw referentiegegevens in XML-bestanden, één per tabel
  • XML-bestanden met referentiegegevens toevoegen aan uw databaseproject
  • Gebruik een post-implementatiescript om de gegevens uit XML te extraheren en samen te voegen in uw tabellen

Hier is een meer gedetailleerde beschrijving van elke stap, geïllustreerd met een voorbeeld. Stel dat u een tabel met landen met deze structuur moet initialiseren:

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

Maak een nieuwe map met de naam ReferenceData onder uw databaseproject. Het zou een broer of zus moeten zijn van de Schema Objects en Scripts .

Voeg een nieuw XML-bestand toe met de naam Country.xml naar de ReferenceData map. Vul het bestand als volgt in:

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

Zoek Script.PostDeployment.sql , en voeg er de volgende code aan toe:

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)
;

Ik heb deze oplossing alleen in VS 2008 geprobeerd, maar het zou agnostisch moeten zijn voor uw ontwikkelomgeving.




  1. CodeIgniter Active Record - Groeps-OR-instructies

  2. Hoe gebruik je $db van een andere .php naar een andere .php-klasse met behulp van OOP?

  3. SQLAlchemy meerdere externe sleutels in één toegewezen klasse aan dezelfde primaire sleutel

  4. Hoe SECOND() werkt in MariaDB