Bạn có thể sử dụng phương pháp này:
- Đưa dữ liệu tham chiếu của bạn vào các tệp XML, mỗi tệp một bảng
- Thêm tệp XML với dữ liệu tham chiếu vào dự án cơ sở dữ liệu của bạn
- Sử dụng tập lệnh Hậu triển khai để trích xuất dữ liệu từ XML và hợp nhất nó vào các bảng của bạn
Dưới đây là mô tả chi tiết hơn về từng bước, được minh họa bằng ví dụ. Giả sử rằng bạn cần khởi tạo một bảng các quốc gia có cấu trúc này:
create table Country (
CountryId uniqueidentifier NOT NULL,
CountryCode varchar(2) NOT NULL,
CountryName varchar(254) NOT NULL
)
Tạo một thư mục mới có tên là ReferenceData
trong dự án cơ sở dữ liệu của bạn. Nó phải là một thư mục anh em của Schema Objects
và Scripts
.
Thêm tệp XML mới có tên Country.xml
vào ReferenceData
thư mục. Điền vào tệp như sau:
<countries>
<country CountryCode="CA" CountryName="Canada"/>
<country CountryCode="MX" CountryName="Mexico"/>
<country CountryCode="US" CountryName="United States of America"/>
</countries>
Tìm Script.PostDeployment.sql
và thêm mã sau vào nó:
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)
;
Tôi đã thử giải pháp này chỉ trong VS 2008, nhưng nó không phù hợp với môi trường phát triển của bạn.