mgoad99 Ответов: 3

Автоматизация создания SQL таблиц из XSD


У меня есть несколько XSD-файлов и связанных с ними XML-файлов, содержащих данные от поставщика. Я буду импортировать XML-данные в SQL Server. Но сначала мне нужно настроить таблицы в SQL Server, чтобы они соответствовали структуре, описанной в XSD-файлах. Вопрос у меня есть, есть ли инструмент или способ автоматизировать созданные таблицы SQL? Я искал инструменты XSD to DML, XML to SQL и не нашел ничего полезного. Кто-нибудь еще делал это? Есть какие - нибудь предложения по вариантам попробовать?

3 Ответов

Рейтинг:
27

mgoad99

Спасибо Райскази, я собираюсь попробовать этот подход в ссылке technect

Рейтинг:
1

Member 14055619

Воспользуйся XSD2DB[^] работал на меня, как чудо.


Рейтинг:
0

tsoibenson

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="IR56B">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Section">  <!-- Section -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:length value="3" />
							<xs:pattern value="[0-9a-zA-Z]*" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="ERN">  <!-- ERN -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:minLength value="1" />
							<xs:maxLength value="8" />
							<xs:pattern value="[0-9]*" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="YrErReturn">  <!-- Year of Employer’s Return -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:length value="4" />
							<xs:pattern value="[0-9]*" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="SubDate">  <!-- Submission Date -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:length value="8" />
							<xs:pattern value="[0-9]*" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="ErName">  <!-- Employer’s Name -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:minLength value="1" />
							<xs:maxLength value="70" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="Designation">  <!-- Designation -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:maxLength value="25" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="NoRecordBatch">  <!-- No. of Records in Batch -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:minLength value="1" />
							<xs:maxLength value="5" />
							<xs:pattern value="[0-9]*" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="TotIncomeBatch">  <!-- Total Income in Batch -->
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:minLength value="1" />
							<xs:maxLength value="11" />
							<xs:pattern value="[0-9]*" />
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="Employee" minOccurs="1" maxOccurs="unbounded">  <!-- Employee’s IR56B record -->
					<xs:complexType>
						<xs:sequence>
							<xs:element name="SheetNo">  <!-- Sheet No -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:minLength value="1" />
										<xs:maxLength value="6" />
										<xs:pattern value="[0-9]*" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="HKID" default="AA000000A">  <!-- Employee’s HKID with Check Digit -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="9" />
										<xs:pattern value="[A-Z a-z]{0,1}[A-Za-z]{1}[0-9]{6}[Aa0-9]{0,1}" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="TypeOfForm">  <!-- Status -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="O" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="Surname">  <!-- Employee’s Surname -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:minLength value="1" />
										<xs:maxLength value="20" />
										<xs:pattern value="[A-Za-z'\.\-]*" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="GivenName">  <!-- Employee’s Given Names in Full -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:minLength value="1" />
										<xs:maxLength value="55" />
										<xs:pattern value="[A-Z a-z0-9!#$%&amp;\*\(\)_\+\-=\\:&quot;;&apos;&lt;&gt;?,\./@]*" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="NameInChinese">  <!-- Employee’s Full Name in Chinese -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="25" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="Sex">  <!-- Employee’s Sex -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="M" />
										<xs:enumeration value="F" />
										<xs:enumeration value="m" />
										<xs:enumeration value="f" />
										<xs:enumeration value="" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="MaritalStatus">  <!-- Employee’s Marital Status -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="1" />
										<xs:enumeration value="2" />
										<xs:enumeration value="" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="PpNum">  <!-- Employee’s Passport No. and Country of Issue -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="40" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="SpouseName">  <!-- Spouse’s Name -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="50" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="SpouseHKID">  <!-- Spouse’s HKID with Check Digit -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="9" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="SpousePpNum">  <!-- Spouse’s Passport No. and Country of Issue -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="40" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="ResAddr">  <!-- Employee’s Residential Address -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="90" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="AreaCodeResAddr">  <!-- Area Code of Employee’s Residential Address -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="1" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="PosAddr">  <!-- Employee’s Postal Address -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="60" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="Capacity">  <!-- Capacity in which Employed -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="40" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="PtPrinEmp">  <!-- If Part Time, Name of Principal Employer -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="30" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="StartDateOfEmp">  <!-- Start Date of Employment -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:length value="8" />
										<xs:pattern value="[0-9]*" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="EndDateOfEmp">  <!-- End Date of Employment -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:length value="8" />
										<xs:pattern value="[0-9]*" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="PerOfSalary">  <!-- Period of Salary/Wages -->
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:maxLength value="19" />
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element name="AmtOfSalary" type="amount" />  <!-- Amount of Salary/Wages -->
							<xs:element name="PerOfLeavePay">  <!-- Period of Leave Pay -->
								<xs:simpleType>
									<xs:restriction base="xs:string">