Bulk inserting data with XML format file in MS SQL? - sql-server

I am pretty new to databases (normally stored everything locally on CSV or HDFS files). I have access to MS SQL Server and I have been trying to load some historical data into the database. I was successful finally and I want to redo my steps for other data, but first I want to make sure that I am being efficient.
1) I create a table using a query and specify the data type of each column and the number of characters (I used len() in Excel and then added a buffer just in case)
2) I then created an XML file, example is below. I notated the delimiter and the data type for each column along with things like max_length and precision/scale where needed.
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="3" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="4" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="5" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="6" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="7" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="10"/>
<FIELD ID="8" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="9" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="10" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="11" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="3"/>
<FIELD ID="12" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="3"/>
<FIELD ID="13" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="14" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="15" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="16" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="17" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="18" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="19" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="20" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="21" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="22" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="23" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="24" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="25" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="26" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="27" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="28" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="29" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="30" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="31" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="32" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="33" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="34" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="35" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="36" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="37" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="38" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="39" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="40" xsi:type="CharTerm" TERMINATOR=","/>
<FIELD ID="41" xsi:type="CharTerm" TERMINATOR="\r\n"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="date" xsi:type="SQLDATE"/>
<COLUMN SOURCE="2" NAME="time" xsi:type="SQLDATETIME"/>
<COLUMN SOURCE="3" NAME="other_date" xsi:type="SQLDATE"/>
<COLUMN SOURCE="4" NAME="other_time" xsi:type="SQLDATETIME"/>
<COLUMN SOURCE="5" NAME="client_id" xsi:type="SQLINT"/>
<COLUMN SOURCE="6" NAME="location_id" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="7" NAME="other_id" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="8" NAME="stuff_1" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="9" NAME="stuff_2" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="10" NAME="email" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="11" NAME="something_active" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="12" NAME="something_active" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="13" NAME="etc" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="14" NAME="etc2" xsi:type="SQLDECIMAL" PRECISION="18" SCALE="2"/>
<COLUMN SOURCE="15" NAME="filler" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="16" NAME="filler" xsi:type="SQLNVARCHAR"/>
<COLUMN SOURCE="17" NAME="fk1" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="18" NAME="fk2" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="19" NAME="fk3" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="20" NAME="fk4" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="21" NAME="fk5" xsi:type="SQLSMALLINT"/>
<COLUMN SOURCE="22" NAME="fk6" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="23" NAME="fk7" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="24" NAME="data1" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="25" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="26" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="27" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="28" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="29" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="30" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="31" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="32" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="33" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="34" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="35" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="36" NAME="data" xsi:type="SQLDECIMAL" PRECISION="5" SCALE="2"/>
<COLUMN SOURCE="37" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="38" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="39" NAME="data" xsi:type="SQLTINYINT"/>
<COLUMN SOURCE="40" NAME="data" xsi:type="SQLDECIMAL" PRECISION="5" SCALE="0"/>
<COLUMN SOURCE="41" NAME="data" xsi:type="SQLTINYINT"/>
</ROW>
</BCPFORMAT>
This worked and it was pretty fast for a few million rows. My question now is whether I need to do this for each file I am going to import (each is probably around 1 million to about 20 million records)? It is somewhat tedious creating a separate CREATE TABLE query and XML file per file, but it should only be a one time thing. Just want to make sure that I am not missing out on a more efficient approach to this whole thing.

Related

Cannot check tables, views in update wizard when updating model from database at Visual Studio 2017

I have a Microsoft SQL Server database connected to an Entity Framework Web API project. I run SSMS & VS 2017.
I erased some column in the model and I want to re-create it with updating from the database. When I try updating model from DB option on the edmx file, there is an update wizard.
The update wizard doesn't allow me to check and table or view in the wizard. It also doesn't add the column from the database to model.
I also have errors as follows (that maybe will disappear when the column will be added to the model):
Error 3023: Problem in mapping fragments starting at line 309:Column GamesScores.GameDateCreation in table GamesScores must be mapped: It has no default value and is not nullable.
01-Data Access Layer C:\projects\webApi\memory match game\Memory Match Game\01-Data Access Layer\MemoryMatch.edmx 310
Error CS0006 Metadata file 'C:\projects\webApi\memory match game\Memory Match Game\03-Business Logic Layer\bin\Debug\03-Business Logic Layer.dll' could not be found
04- Web Api C:\projects\webApi\memory match game\Memory Match Game\04- Web
Api\CSC 1 Active
Here is the mapping of the tables
And here is the EDMX code in a HTML view:
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<!-- EF Runtime content -->
<edmx:Runtime>
<!-- SSDL content -->
<edmx:StorageModels>
<Schema Namespace="MemoryMatchModel.Store" Provider="System.Data.SqlClient" ProviderManifestToken="2012" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
<EntityType Name="ContactMessages">
<Key>
<PropertyRef Name="MessageID" />
</Key>
<Property Name="MessageID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="MessageTimeStamp" Type="datetime" Nullable="false" />
<Property Name="Phone" Type="nvarchar" MaxLength="50" />
<Property Name="Email" Type="nvarchar" MaxLength="50" />
<Property Name="MessageText" Type="nvarchar" MaxLength="200" Nullable="false" />
</EntityType>
<EntityType Name="Feedbacks">
<Key>
<PropertyRef Name="FeedbackID" />
</Key>
<Property Name="FeedbackID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="UserID" Type="int" Nullable="false" />
<Property Name="FeedbackTimeStamp" Type="datetime" Nullable="false" />
<Property Name="FeedbackText" Type="nvarchar" MaxLength="250" Nullable="false" />
</EntityType>
<EntityType Name="GamesScores">
<Key>
<PropertyRef Name="GameScoreID" />
</Key>
<Property Name="GameScoreID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="UserID" Type="int" Nullable="false" />
<Property Name="GameDateCreation" Type="datetime" Nullable="false" />
<Property Name="GameDuration" Type="time" Precision="7" Nullable="false" />
<Property Name="GameSteps" Type="int" Nullable="false" />
</EntityType>
<EntityType Name="Images">
<Key>
<PropertyRef Name="ImageID" />
</Key>
<Property Name="ImageID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="ImageName" Type="nvarchar" MaxLength="256" Nullable="false" />
</EntityType>
<EntityType Name="sysdiagrams">
<Key>
<PropertyRef Name="diagram_id" />
</Key>
<Property Name="name" Type="nvarchar" MaxLength="128" Nullable="false" />
<Property Name="principal_id" Type="int" Nullable="false" />
<Property Name="diagram_id" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="version" Type="int" />
<Property Name="definition" Type="varbinary(max)" />
</EntityType>
<EntityType Name="Users">
<Key>
<PropertyRef Name="UserID" />
</Key>
<Property Name="UserID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="FullName" Type="nvarchar" MaxLength="50" Nullable="false" />
<Property Name="UserName" Type="nvarchar" MaxLength="50" Nullable="false" />
<Property Name="Password" Type="nvarchar" MaxLength="50" Nullable="false" />
<Property Name="Email" Type="nvarchar" MaxLength="50" />
<Property Name="Birthdate" Type="date" />
</EntityType>
<Association Name="FK_Feedbacks_Users">
<End Role="Users" Type="Self.Users" Multiplicity="1" />
<End Role="Feedbacks" Type="Self.Feedbacks" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Users">
<PropertyRef Name="UserID" />
</Principal>
<Dependent Role="Feedbacks">
<PropertyRef Name="UserID" />
</Dependent>
</ReferentialConstraint>
</Association>
<Association Name="FK_GamesScores_Users">
<End Role="Users" Type="Self.Users" Multiplicity="1" />
<End Role="GamesScores" Type="Self.GamesScores" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Users">
<PropertyRef Name="UserID" />
</Principal>
<Dependent Role="GamesScores">
<PropertyRef Name="UserID" />
</Dependent>
</ReferentialConstraint>
</Association>
<Function Name="fn_diagramobjects" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" ReturnType="int" />
<Function Name="sp_alterdiagram" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="diagramname" Type="nvarchar" Mode="In" />
<Parameter Name="owner_id" Type="int" Mode="In" />
<Parameter Name="version" Type="int" Mode="In" />
<Parameter Name="definition" Type="varbinary(max)" Mode="In" />
</Function>
<Function Name="sp_creatediagram" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="diagramname" Type="nvarchar" Mode="In" />
<Parameter Name="owner_id" Type="int" Mode="In" />
<Parameter Name="version" Type="int" Mode="In" />
<Parameter Name="definition" Type="varbinary(max)" Mode="In" />
</Function>
<Function Name="sp_dropdiagram" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="diagramname" Type="nvarchar" Mode="In" />
<Parameter Name="owner_id" Type="int" Mode="In" />
</Function>
<Function Name="sp_helpdiagramdefinition" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="diagramname" Type="nvarchar" Mode="In" />
<Parameter Name="owner_id" Type="int" Mode="In" />
</Function>
<Function Name="sp_helpdiagrams" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="diagramname" Type="nvarchar" Mode="In" />
<Parameter Name="owner_id" Type="int" Mode="In" />
</Function>
<Function Name="sp_renamediagram" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="diagramname" Type="nvarchar" Mode="In" />
<Parameter Name="owner_id" Type="int" Mode="In" />
<Parameter Name="new_diagramname" Type="nvarchar" Mode="In" />
</Function>
<Function Name="sp_upgraddiagrams" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" />
<EntityContainer Name="MemoryMatchModelStoreContainer">
<EntitySet Name="ContactMessages" EntityType="Self.ContactMessages" Schema="dbo" store:Type="Tables" />
<EntitySet Name="Feedbacks" EntityType="Self.Feedbacks" Schema="dbo" store:Type="Tables" />
<EntitySet Name="GamesScores" EntityType="Self.GamesScores" Schema="dbo" store:Type="Tables" />
<EntitySet Name="Images" EntityType="Self.Images" Schema="dbo" store:Type="Tables" />
<EntitySet Name="sysdiagrams" EntityType="Self.sysdiagrams" Schema="dbo" store:Type="Tables" />
<EntitySet Name="Users" EntityType="Self.Users" Schema="dbo" store:Type="Tables" />
<AssociationSet Name="FK_Feedbacks_Users" Association="Self.FK_Feedbacks_Users">
<End Role="Users" EntitySet="Users" />
<End Role="Feedbacks" EntitySet="Feedbacks" />
</AssociationSet>
<AssociationSet Name="FK_GamesScores_Users" Association="Self.FK_GamesScores_Users">
<End Role="Users" EntitySet="Users" />
<End Role="GamesScores" EntitySet="GamesScores" />
</AssociationSet>
</EntityContainer>
</Schema></edmx:StorageModels>
<!-- CSDL content -->
<edmx:ConceptualModels>
<Schema Namespace="MemoryMatchModel" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
<EntityType Name="ContactMessage">
<Key>
<PropertyRef Name="MessageID" />
</Key>
<Property Name="MessageID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="MessageTimeStamp" Type="DateTime" Nullable="false" Precision="3" />
<Property Name="Phone" Type="String" MaxLength="50" FixedLength="false" Unicode="true" />
<Property Name="Email" Type="String" MaxLength="50" FixedLength="false" Unicode="true" />
<Property Name="MessageText" Type="String" MaxLength="200" FixedLength="false" Unicode="true" Nullable="false" />
</EntityType>
<EntityType Name="Feedback">
<Key>
<PropertyRef Name="FeedbackID" />
</Key>
<Property Name="FeedbackID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="UserID" Type="Int32" Nullable="false" />
<Property Name="FeedbackTimeStamp" Type="DateTime" Nullable="false" Precision="3" />
<Property Name="FeedbackText" Type="String" MaxLength="250" FixedLength="false" Unicode="true" Nullable="false" />
<NavigationProperty Name="User" Relationship="Self.FK_Feedbacks_Users" FromRole="Feedbacks" ToRole="Users" />
</EntityType>
<EntityType Name="GamesScore">
<Key>
<PropertyRef Name="GameScoreID" />
</Key>
<Property Name="GameScoreID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="UserID" Type="Int32" Nullable="false" />
<Property Name="GameSteps" Type="Int32" Nullable="false" />
<NavigationProperty Name="User" Relationship="Self.FK_GamesScores_Users" FromRole="GamesScores" ToRole="Users" />
<Property Name="GameDuration" Type="Time" Nullable="false" Precision="7" />
</EntityType>
<EntityType Name="Image">
<Key>
<PropertyRef Name="ImageID" />
</Key>
<Property Name="ImageID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="ImageName" Type="String" MaxLength="256" FixedLength="false" Unicode="true" Nullable="false" />
</EntityType>
<EntityType Name="sysdiagram">
<Key>
<PropertyRef Name="diagram_id" />
</Key>
<Property Name="name" Type="String" MaxLength="128" FixedLength="false" Unicode="true" Nullable="false" />
<Property Name="principal_id" Type="Int32" Nullable="false" />
<Property Name="diagram_id" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="version" Type="Int32" />
<Property Name="definition" Type="Binary" MaxLength="Max" FixedLength="false" />
</EntityType>
<EntityType Name="User">
<Key>
<PropertyRef Name="UserID" />
</Key>
<Property Name="UserID" Type="Int32" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="FullName" Type="String" MaxLength="50" FixedLength="false" Unicode="true" Nullable="false" />
<Property Name="UserName" Type="String" MaxLength="50" FixedLength="false" Unicode="true" Nullable="false" />
<Property Name="Password" Type="String" MaxLength="50" FixedLength="false" Unicode="true" Nullable="false" />
<Property Name="Email" Type="String" MaxLength="50" FixedLength="false" Unicode="true" />
<Property Name="Birthdate" Type="DateTime" Precision="0" />
<NavigationProperty Name="Feedbacks" Relationship="Self.FK_Feedbacks_Users" FromRole="Users" ToRole="Feedbacks" />
<NavigationProperty Name="GamesScores" Relationship="Self.FK_GamesScores_Users" FromRole="Users" ToRole="GamesScores" />
</EntityType>
<Association Name="FK_Feedbacks_Users">
<End Role="Users" Type="Self.User" Multiplicity="1" />
<End Role="Feedbacks" Type="Self.Feedback" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Users">
<PropertyRef Name="UserID" />
</Principal>
<Dependent Role="Feedbacks">
<PropertyRef Name="UserID" />
</Dependent>
</ReferentialConstraint>
</Association>
<Association Name="FK_GamesScores_Users">
<End Role="Users" Type="Self.User" Multiplicity="1" />
<End Role="GamesScores" Type="Self.GamesScore" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="Users">
<PropertyRef Name="UserID" />
</Principal>
<Dependent Role="GamesScores">
<PropertyRef Name="UserID" />
</Dependent>
</ReferentialConstraint>
</Association>
<EntityContainer Name="MemoryMatchEntities" annotation:LazyLoadingEnabled="true">
<EntitySet Name="ContactMessages" EntityType="Self.ContactMessage" />
<EntitySet Name="Feedbacks" EntityType="Self.Feedback" />
<EntitySet Name="GamesScores" EntityType="Self.GamesScore" />
<EntitySet Name="Images" EntityType="Self.Image" />
<EntitySet Name="sysdiagrams" EntityType="Self.sysdiagram" />
<EntitySet Name="Users" EntityType="Self.User" />
<AssociationSet Name="FK_Feedbacks_Users" Association="Self.FK_Feedbacks_Users">
<End Role="Users" EntitySet="Users" />
<End Role="Feedbacks" EntitySet="Feedbacks" />
</AssociationSet>
<AssociationSet Name="FK_GamesScores_Users" Association="Self.FK_GamesScores_Users">
<End Role="Users" EntitySet="Users" />
<End Role="GamesScores" EntitySet="GamesScores" />
</AssociationSet>
<FunctionImport Name="sp_alterdiagram">
<Parameter Name="diagramname" Mode="In" Type="String" />
<Parameter Name="owner_id" Mode="In" Type="Int32" />
<Parameter Name="version" Mode="In" Type="Int32" />
<Parameter Name="definition" Mode="In" Type="Binary" />
</FunctionImport>
<FunctionImport Name="sp_creatediagram">
<Parameter Name="diagramname" Mode="In" Type="String" />
<Parameter Name="owner_id" Mode="In" Type="Int32" />
<Parameter Name="version" Mode="In" Type="Int32" />
<Parameter Name="definition" Mode="In" Type="Binary" />
</FunctionImport>
<FunctionImport Name="sp_dropdiagram">
<Parameter Name="diagramname" Mode="In" Type="String" />
<Parameter Name="owner_id" Mode="In" Type="Int32" />
</FunctionImport>
<FunctionImport Name="sp_helpdiagramdefinition" ReturnType="Collection(MemoryMatchModel.sp_helpdiagramdefinition_Result)">
<Parameter Name="diagramname" Mode="In" Type="String" />
<Parameter Name="owner_id" Mode="In" Type="Int32" />
</FunctionImport>
<FunctionImport Name="sp_helpdiagrams" ReturnType="Collection(MemoryMatchModel.sp_helpdiagrams_Result)">
<Parameter Name="diagramname" Mode="In" Type="String" />
<Parameter Name="owner_id" Mode="In" Type="Int32" />
</FunctionImport>
<FunctionImport Name="sp_renamediagram">
<Parameter Name="diagramname" Mode="In" Type="String" />
<Parameter Name="owner_id" Mode="In" Type="Int32" />
<Parameter Name="new_diagramname" Mode="In" Type="String" />
</FunctionImport>
<FunctionImport Name="sp_upgraddiagrams" />
</EntityContainer>
<ComplexType Name="sp_helpdiagramdefinition_Result">
<Property Type="Int32" Name="version" Nullable="true" />
<Property Type="Binary" Name="definition" Nullable="true" />
</ComplexType>
<ComplexType Name="sp_helpdiagrams_Result">
<Property Type="String" Name="Database" Nullable="true" MaxLength="128" />
<Property Type="String" Name="Name" Nullable="false" MaxLength="128" />
<Property Type="Int32" Name="ID" Nullable="false" />
<Property Type="String" Name="Owner" Nullable="true" MaxLength="128" />
<Property Type="Int32" Name="OwnerID" Nullable="false" />
</ComplexType>
</Schema>
</edmx:ConceptualModels>
<!-- C-S mapping content -->
<edmx:Mappings>
<Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs">
<EntityContainerMapping StorageEntityContainer="MemoryMatchModelStoreContainer" CdmEntityContainer="MemoryMatchEntities">
<EntitySetMapping Name="ContactMessages">
<EntityTypeMapping TypeName="MemoryMatchModel.ContactMessage">
<MappingFragment StoreEntitySet="ContactMessages">
<ScalarProperty Name="MessageID" ColumnName="MessageID" />
<ScalarProperty Name="MessageTimeStamp" ColumnName="MessageTimeStamp" />
<ScalarProperty Name="Phone" ColumnName="Phone" />
<ScalarProperty Name="Email" ColumnName="Email" />
<ScalarProperty Name="MessageText" ColumnName="MessageText" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Feedbacks">
<EntityTypeMapping TypeName="MemoryMatchModel.Feedback">
<MappingFragment StoreEntitySet="Feedbacks">
<ScalarProperty Name="FeedbackID" ColumnName="FeedbackID" />
<ScalarProperty Name="UserID" ColumnName="UserID" />
<ScalarProperty Name="FeedbackTimeStamp" ColumnName="FeedbackTimeStamp" />
<ScalarProperty Name="FeedbackText" ColumnName="FeedbackText" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="GamesScores">
<EntityTypeMapping TypeName="MemoryMatchModel.GamesScore">
<MappingFragment StoreEntitySet="GamesScores">
<ScalarProperty Name="GameDuration" ColumnName="GameDuration" />
<ScalarProperty Name="GameScoreID" ColumnName="GameScoreID" />
<ScalarProperty Name="UserID" ColumnName="UserID" />
<ScalarProperty Name="GameSteps" ColumnName="GameSteps" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Images">
<EntityTypeMapping TypeName="MemoryMatchModel.Image">
<MappingFragment StoreEntitySet="Images">
<ScalarProperty Name="ImageID" ColumnName="ImageID" />
<ScalarProperty Name="ImageName" ColumnName="ImageName" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="sysdiagrams">
<EntityTypeMapping TypeName="MemoryMatchModel.sysdiagram">
<MappingFragment StoreEntitySet="sysdiagrams">
<ScalarProperty Name="name" ColumnName="name" />
<ScalarProperty Name="principal_id" ColumnName="principal_id" />
<ScalarProperty Name="diagram_id" ColumnName="diagram_id" />
<ScalarProperty Name="version" ColumnName="version" />
<ScalarProperty Name="definition" ColumnName="definition" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<EntitySetMapping Name="Users">
<EntityTypeMapping TypeName="MemoryMatchModel.User">
<MappingFragment StoreEntitySet="Users">
<ScalarProperty Name="UserID" ColumnName="UserID" />
<ScalarProperty Name="FullName" ColumnName="FullName" />
<ScalarProperty Name="UserName" ColumnName="UserName" />
<ScalarProperty Name="Password" ColumnName="Password" />
<ScalarProperty Name="Email" ColumnName="Email" />
<ScalarProperty Name="Birthdate" ColumnName="Birthdate" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
<FunctionImportMapping FunctionImportName="sp_alterdiagram" FunctionName="MemoryMatchModel.Store.sp_alterdiagram" />
<FunctionImportMapping FunctionImportName="sp_creatediagram" FunctionName="MemoryMatchModel.Store.sp_creatediagram" />
<FunctionImportMapping FunctionImportName="sp_dropdiagram" FunctionName="MemoryMatchModel.Store.sp_dropdiagram" />
<FunctionImportMapping FunctionImportName="sp_helpdiagramdefinition" FunctionName="MemoryMatchModel.Store.sp_helpdiagramdefinition">
<ResultMapping>
<ComplexTypeMapping TypeName="MemoryMatchModel.sp_helpdiagramdefinition_Result">
<ScalarProperty Name="version" ColumnName="version" />
<ScalarProperty Name="definition" ColumnName="definition" />
</ComplexTypeMapping>
</ResultMapping>
</FunctionImportMapping>
<FunctionImportMapping FunctionImportName="sp_helpdiagrams" FunctionName="MemoryMatchModel.Store.sp_helpdiagrams">
<ResultMapping>
<ComplexTypeMapping TypeName="MemoryMatchModel.sp_helpdiagrams_Result">
<ScalarProperty Name="Database" ColumnName="Database" />
<ScalarProperty Name="Name" ColumnName="Name" />
<ScalarProperty Name="ID" ColumnName="ID" />
<ScalarProperty Name="Owner" ColumnName="Owner" />
<ScalarProperty Name="OwnerID" ColumnName="OwnerID" />
</ComplexTypeMapping>
</ResultMapping>
</FunctionImportMapping>
<FunctionImportMapping FunctionImportName="sp_renamediagram" FunctionName="MemoryMatchModel.Store.sp_renamediagram" />
<FunctionImportMapping FunctionImportName="sp_upgraddiagrams" FunctionName="MemoryMatchModel.Store.sp_upgraddiagrams" />
</EntityContainerMapping>
</Mapping>
</edmx:Mappings>
</edmx:Runtime>
<!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
<Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
<Connection>
<DesignerInfoPropertySet>
<DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
</DesignerInfoPropertySet>
</Connection>
<Options>
<DesignerInfoPropertySet>
<DesignerProperty Name="ValidateOnBuild" Value="true" />
<DesignerProperty Name="EnablePluralization" Value="true" />
<DesignerProperty Name="IncludeForeignKeysInModel" Value="true" />
<DesignerProperty Name="UseLegacyProvider" Value="false" />
<DesignerProperty Name="CodeGenerationStrategy" Value="None" />
</DesignerInfoPropertySet>
</Options>
<!-- Diagram content (shape and connector positions) -->
<Diagrams></Diagrams>
</Designer>
</edmx:Edmx>
Why can't I add the column GameDateCreation to my model from the database?
Is it because of the errors I mentioned?
You have mentioned column GameDateCreation under <EntityType Name="GamesScores"> in section SSDL. But, You have not mentioned same column GameDateCreation mentioned under <EntitySetMapping Name="GamesScores"> in Mappings section.
There should be below mentioned line code under <EntitySetMapping Name="GamesScores">.
<ScalarProperty Name="GameDateCreation" ColumnName="GameDateCreation" />
Other workaround will be remove all references of column GameDateCreation from edmx file and try to add column to model from database.
Please let me know how you go.

Foriegn key error while running liquibase

I am working on a modular architecture project where each module has there own liquibase. Let assume I have two module name module-a and module-b. Module-b liquibase have the reference of the column which defined in module-a liquibase. While inserting data through liquibase of module-b getting the foreign key exception while foreign key data is defined in liquibase of module-a.
Below is description of module-a liquibase:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet author="mukesh" id="1227303685425-4">
<createTable tableName="concept">
<column autoIncrement="true" name="concept_id" type="int">
<constraints nullable="false" primaryKey="true"/>
</column>
<column defaultValueBoolean="false" name="retired" type="BOOLEAN">
<constraints nullable="false"/>
</column>
<column name="short_name" type="varchar(255)"/>
<column name="description" type="text"/>
<column name="form_text" type="text"/>
<column defaultValueNumeric="0" name="datatype_id" type="int">
<constraints nullable="false"/>
</column>
<column defaultValueNumeric="0" name="class_id" type="int">
<constraints nullable="false"/>
</column>
<column defaultValueBoolean="false" name="is_set" type="BOOLEAN">
<constraints nullable="false"/>
</column>
<column defaultValueNumeric="0" name="creator" type="int">
<constraints nullable="false"/>
</column>
<column name="date_created" type="DATETIME">
<constraints nullable="false"/>
</column>
<column name="version" type="varchar(50)"/>
<column name="changed_by" type="int"/>
<column name="date_changed" type="DATETIME"/>
<column name="retired_by" type="int"/>
<column name="date_retired" type="DATETIME"/>
<column name="retire_reason" type="varchar(255)"/>
<column name="uuid" type="char(38)" />
</createTable>
<createTable tableName="concept_answer">
<column autoIncrement="true" name="concept_answer_id" type="int">
<constraints nullable="false" primaryKey="true"/>
</column>
<column defaultValueNumeric="0" name="concept_id" type="int">
<constraints nullable="false"/>
</column>
<column name="answer_concept" type="int"/>
<column name="answer_drug" type="int"/>
<column defaultValueNumeric="0" name="creator" type="int">
<constraints nullable="false"/>
</column>
<column name="date_created" type="DATETIME">
<constraints nullable="false"/>
</column>
<column name="sort_weight" type="double precision"></column>
<column name="uuid" type="char(38)" />
</createTable>
<modifySql dbms="mssql">
<replace replace="CHAR(38)" with="UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID()" />
</modifySql>
<insert tableName="concept">
<column name="concept_id" valueNumeric="51"/>
<column name="retired" valueBoolean="true"/>
<column name="short_name" value=""/>
<column name="description" value=""/>
<column name="form_text"/>
<column name="datatype_id" valueNumeric="4"/>
<column name="class_id" valueNumeric="4"/>
<column name="is_set" valueBoolean="false"/>
<column name="creator" valueNumeric="1"/>
<column name="date_created" valueDate="2004-01-01"/>
<column name="version" value=""/>
<column name="changed_by"/>
<column name="date_changed"/>
<column name="retired_by"/>
<column name="date_retired"/>
<column name="retire_reason"/>
</insert>
</changeSet>
</databaseChangeLog>
Module-b liquibase description:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet author="mukesh" id="1227303685425-4">
<insert tableName="concept_answer">
<column name="concept_answer_id" valueNumeric="1"/>
<column name="concept_id" valueNumeric="51"/>
<column name="answer_concept" valueNumeric="1115"/>
<column name="answer_drug"/>
<column name="creator" valueNumeric="1"/>
<column name="date_created" valueDate="2005-01-26"/>
</insert>
</changeSet>
</databaseChangeLog>
Please, someone help me to solve this issue.

Convert XML value to a table using SQL

"I have a xml field with the following value:
<table>
<id>{cdf8cafc-2b3c-454b-aab8-c6c27e96b675}</id>
<rows>
<row>
<columns>
<column name="po_desc" value="Item-1" type="System.String" />
<column name="Qty" value="15" type="System.Int32" />
<column name="price" value="100" type="System.Decimal" />
<column name="linetotal" value="1500" type="System.Decimal" />
<column name="DefaultKey" value="1" type="System.Int32" />
</columns>
</row>
<row>
<columns>
<column name="po_desc" value="" type="System.String" />
<column name="Qty" value="1" type="System.Int32" />
<column name="price" value="1" type="System.Decimal" />
<column name="linetotal" value="1" type="System.Decimal" />
<column name="DefaultKey" value="2" type="System.Int32" />
</columns>
</row>
</rows>
</table>
And I need to transform this to Row and columns as below
PO_desc Qty Price LineTotal
=====================================
item-1 15 100 1500
Item-2 1 1 1
=======================================
using MS SQL Query.
Try it like this
DECLARE #DummyTable TABLE(ID INT IDENTITY, YourXmlColumn XML);
INSERT INTO #DummyTable VALUES
('<table>
<id>{cdf8cafc-2b3c-454b-aab8-c6c27e96b675}</id>
<rows>
<row>
<columns>
<column name="po_desc" value="Item-1" type="System.String" />
<column name="Qty" value="15" type="System.Int32" />
<column name="price" value="100" type="System.Decimal" />
<column name="linetotal" value="1500" type="System.Decimal" />
<column name="DefaultKey" value="1" type="System.Int32" />
</columns>
</row>
<row>
<columns>
<column name="po_desc" value="" type="System.String" />
<column name="Qty" value="1" type="System.Int32" />
<column name="price" value="1" type="System.Decimal" />
<column name="linetotal" value="1" type="System.Decimal" />
<column name="DefaultKey" value="2" type="System.Int32" />
</columns>
</row>
</rows>
</table>');
This is the query
SELECT r.value('(columns/column[#name="po_desc"]/#value)[1]','nvarchar(max)') AS PO_Desc
,r.value('(columns/column[#name="Qty"]/#value)[1]','int') AS Qty
,r.value('(columns/column[#name="price"]/#value)[1]','decimal') AS Price
,r.value('(columns/column[#name="linetotal"]/#value)[1]','decimal') AS LineTotal
FROM #DummyTable AS t
CROSS APPLY t.YourXmlColumn.nodes('/table/rows/row') AS A(r);

Checkbox not showing at custom datalist in Alfresco

I've been trying to help one of my colleagues with an issue with Alfresco custom datalists. We are using Alfresco Community 5.0.d
We have a custom datalist in which there is a checkbox in one of the fields.
The code in both sides looks the same to us... The file checkbox.ftl is inside the same place in both places, and it is exactly the same file. We have also rebuilt the indices just in case which as far as I have understood it won't be necessary in this case. All the datalist works correctly except the checkbox. We have seen that the 'input type="checkbox"' is not in the view generated at the production side. We have no clue where to look. I'm about to copy all the modified/added file for this matter. If you need any extra information just tell me and I will gladly provide it.
In the test environment, we have managed to make it work using the following code:
<model name="datos:datosModel"
xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Optional meta-data about the model -->
<description>Custom Datalist</description>
<author>Maria Royo</author>
<version>1.0</version>
<imports>
<!-- Import Alfresco Dictionary Definitions -->
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
<!--Import Alfresco Data List Model Definitions -->
<import uri="http://www.alfresco.org/model/datalist/1.0" prefix="dl"/>
</imports>
<!-- Introduction of new namespaces defined by this model -->
<!-- NOTE: The following namespace custom.model should be changed to reflect your own namespace -->
<namespaces>
<namespace uri="datos.datosModel" prefix="datos"/>
</namespaces>
<!-- Tipo de dato combobox -->
<!-- Scope-->
<constraints>
<constraint name="datos:Scope" type="LIST">
<parameter name="allowedValues">
<list>
<value>ESA</value>
<value>IOT</value>
<value>Internal</value>
</list>
</parameter>
</constraint>
</constraints>
<types>
<!-- Data list defintions For this model go here -->
<type name="datos:datosTabla">
<title>Document Library</title>
<description>Document Library del EMIS</description>
<parent>dl:dataListItem</parent>
<properties>
<property name="datos:datosID">
<title>Reference</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosTitle">
<title>Title</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosVersions">
<title>Versions</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosIncr">
<title>Increment</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosUpdate">
<title>Last Update</title>
<type>d:date</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosDRD">
<title>DRD Reference</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosScope">
<title>Scope</title>
<type>d:text</type>
<mandatory>false</mandatory>
<constraints>
<constraint ref="datos:Scope" />
</constraints>
</property>
<property name="datos:datosRemarks">
<title>Remarks</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<!-- Type Checkbox -->
<property name="datos:datosDel">
<title>Delivered</title>
<description>Active</description>
<type>d:boolean</type>
</property>
</properties>
<associations>
<association name="datos:datosAttachments">
<title>Link</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:cmobject</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</type>
</types>
This is the code we have at the production environment:
<model name="datos:datosModel"
xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Optional meta-data about the model -->
<description>Custom Datalist</description>
<author>Maria Royo</author>
<version>1.0</version>
<imports>
<!-- Import Alfresco Dictionary Definitions -->
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
<!--Import Alfresco Data List Model Definitions -->
<import uri="http://www.alfresco.org/model/datalist/1.0" prefix="dl"/>
</imports>
<!-- Introduction of new namespaces defined by this model -->
<!-- NOTE: The following namespace custom.model should be changed to reflect your own namespace -->
<namespaces>
<namespace uri="datos.datosModel" prefix="datos"/>
</namespaces>
<!-- Tipo de dato combobox -->
<!-- Scope-->
<constraints>
<constraint name="datos:Scope" type="LIST">
<parameter name="allowedValues">
<list>
<value>ESA</value>
<value>IOT</value>
<value>Internal</value>
</list>
</parameter>
</constraint>
</constraints>
<types>
<!-- Data list defintions For this model go here -->
<type name="datos:datosTabla">
<title>E-USOC Document Library</title>
<description>E-USOC Document Library</description>
<parent>dl:dataListItem</parent>
<properties>
<property name="datos:datosID">
<title>Reference</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosTitle">
<title>Title</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosVersions">
<title>Versions</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosIncr">
<title>Increment</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosUpdate">
<title>Last Update</title>
<type>d:date</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosDRD">
<title>DRD Reference</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<property name="datos:datosScope">
<title>Scope</title>
<type>d:text</type>
<mandatory>false</mandatory>
<constraints>
<constraint ref="datos:Scope" />
</constraints>
</property>
<property name="datos:datosRemarks">
<title>Remarks</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
<!-- Type Checkbox -->
<property name="datos:datosDel">
<title>Delivered</title>
<description>Delivered</description>
<type>d:boolean</type>
</property>
</properties>
<associations>
<association name="datos:datosAttachments">
<title>Link</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:cmobject</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</type>
</types>
Both files are inside the same directory which is:
/alfresco-5.0.d/tomcat/shared/classes/alfresco/extension
Also, we have this code inside the:
/alfresco-5.0.d/tomcat/shared/classes/alfresco/web-extension/share_config_custom.xml
At test environment the code is as follow:
<config evaluator="model-type" condition="datos:datosTabla">
<forms>
<!-- Create item form -->
<form>
<field-visibility>
<show id="datos:datosID" />
<show id="datos:datosTitle" />
<show id="datos:datosAttachments" />
<show id="datos:datosVersions" />
<show id="datos:datosIncr" />
<show id="datos:datosUpdate" />
<show id="datos:datosDRD" />
<show id="datos:datosScope" />
<show id="datos:datosDel" />
<show id="datos:datosRemarks" />
</field-visibility>
<create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl" />
<appearance>
<field id="datos:datosID">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosTitle">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosAttachments">
<control>
<control-param name="startLocation">{doclib}</control-param>
</control>
</field>
<field id="datos:datosVersions">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosIncr">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosUpdates">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosDRD">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosScope">
<control template="/org/alfresco/components/form/controls/selectone.ftl" />
</field>
<field id="datos:datosDel">
<control template="/org/alfresco/components/form/controls/checkbox.ftl" />
</field>
<field id="datos:datosRemarks">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
</appearance>
</form>
<!--Data Grid view-->
<form id="datagrid">
<field-visibility>
<show id="datos:datosID" />
<show id="datos:datosTitle" />
<show id="datos:datosAttachments" />
<show id="datos:datosVersions" />
<show id="datos:datosIncr" />
<show id="datos:datosUpdate" />
<show id="datos:datosDRD" />
<show id="datos:datosScope" />
<show id="datos:datosDel" />
<show id="datos:datosRemarks" />
</field-visibility>
</form>
</forms>
</config>
<!-- Edit view -->
<config evaluator="node-type" condition="datos:datosTabla">
<forms>
Edit marketing item form
<form>
<field-visibility>
<show id="datos:datosID" />
<show id="datos:datosTitle" />
<show id="datos:datosAttachments" />
<show id="datos:datosVersions" />
<show id="datos:datosIncr" />
<show id="datos:datosUpdate" />
<show id="datos:datosDRD" />
<show id="datos:datosScope" />
<show id="datos:datosDel" />
<show id="datos:datosRemarks" />
</field-visibility>
<create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl" />
<appearance>
<field id="datos:datosID">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosTitle">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosAttachments">
<control>
<control-param name="startLocation">{doclib}</control-param>
</control>
</field>
<field id="datos:datosVersions">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosIncr">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosUpdates">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosDRD">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosScope">
<control template="/org/alfresco/components/form/controls/selectone.ftl" />
</field>
<field id="datos:datosDel">
<control template="/org/alfresco/components/form/controls/checkbox.ftl" />
</field>
<field id="datos:datosRemarks">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
</appearance>
</form>
</forms>
</config>
And finally the code in the production environment:
<config evaluator="model-type" condition="datos:datosTabla">
<forms>
<!-- Create item form -->
<form>
<field-visibility>
<show id="datos:datosID" />
<show id="datos:datosTitle" />
<show id="datos:datosAttachments" />
<show id="datos:datosVersions" />
<show id="datos:datosIncr" />
<show id="datos:datosUpdate" />
<show id="datos:datosDRD" />
<show id="datos:datosScope" />
<show id="datos:datosDel" />
<show id="datos:datosRemarks" />
</field-visibility>
<create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl" />
<appearance>
<field id="datos:datosID">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosTitle">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosAttachments">
<control>
<control-param name="startLocation">{doclib}</control-param>
</control>
</field>
<field id="datos:datosVersions">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosIncr">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosUpdates">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosDRD">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosScope">
<control template="/org/alfresco/components/form/controls/selectone.ftl" />
</field>
<field id="datos:datosDel">
<control template="/org/alfresco/components/form/controls/checkbox.ftl" />
</field>
<field id="datos:datosRemarks">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
</appearance>
</form>
<!--Data Grid view-->
<form id="datagrid">
<field-visibility>
<show id="datos:datosID" />
<show id="datos:datosTitle" />
<show id="datos:datosAttachments" />
<show id="datos:datosVersions" />
<show id="datos:datosIncr" />
<show id="datos:datosUpdate" />
<show id="datos:datosDRD" />
<show id="datos:datosScope" />
<show id="datos:datosDel" />
<show id="datos:datosRemarks" />
</field-visibility>
</form>
</forms>
</config>
<!-- Edit view -->
<config evaluator="node-type" condition="datos:datosTabla">
<forms>
<!-- Edit marketing item form -->
<form>
<field-visibility>
<show id="datos:datosID" />
<show id="datos:datosTitle" />
<show id="datos:datosAttachments" />
<show id="datos:datosVersions" />
<show id="datos:datosIncr" />
<show id="datos:datosUpdate" />
<show id="datos:datosDRD" />
<show id="datos:datosScope" />
<show id="datos:datosDel" />
<show id="datos:datosRemarks" />
</field-visibility>
<create-form template="/org/alfresco/components/data-lists/forms/dataitem.ftl" />
<appearance>
<field id="datos:datosID">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosTitle">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosAttachments">
<control>
<control-param name="startLocation">{doclib}</control-param>
</control>
</field>
<field id="datos:datosVersions">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosIncr">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosUpdates">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosDRD">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
<field id="datos:datosScope">
<control template="/org/alfresco/components/form/controls/selectone.ftl" />
</field>
<field id="datos:datosDel">
<control template="/org/alfresco/components/form/controls/checkbox.ftl" />
</field>
<field id="datos:datosRemarks">
<control template="/org/alfresco/components/form/controls/textarea.ftl" />
</field>
</appearance>
</form>
</forms>
</config>

How to generate xml file as output for a database in specific format through stored procedure in SQL Server?

I want to generate an xml file in the format shown below through a stored procedure.
I am facing few issues to fetch the values in the same format for the foreign key tag which is below. So can anyone help me out on how to create a stored procedure which yields the result in below given format?
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<database name="Northwind" default="True">
<schema name="dbo" default="True">
<table name="Categories">
<field name="CategoryID" primary_key="True" type_name="int" type="Int32" size="4" precision="10" scale="255" nullable="False" readonly="True" />
<field name="CategoryName" type_name="nvarchar" type="String" size="15" precision="255" scale="255" nullable="False" />
<field name="Description" type_name="ntext" type="String" size="1073741823" precision="255" scale="255" />
<field name="Picture" type_name="image" type="Binary" size="2147483647" precision="255" scale="255" />
</table>
<table name="Customers">
<field name="CustomerID" primary_key="True" type_name="nchar" type="String" size="5" precision="255" scale="255" nullable="False" />
<field name="CompanyName" type_name="nvarchar" type="String" size="40" precision="255" scale="255" nullable="False" />
<field name="ContactName" type_name="nvarchar" type="String" size="30" precision="255" scale="255" />
<field name="ContactTitle" type_name="nvarchar" type="String" size="30" precision="255" scale="255" />
<field name="Address" type_name="nvarchar" type="String" size="60" precision="255" scale="255" />
<field name="City" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="Region" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="PostalCode" type_name="nvarchar" type="String" size="10" precision="255" scale="255" />
<field name="Country" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="Phone" type_name="nvarchar" type="String" size="24" precision="255" scale="255" />
<field name="Fax" type_name="nvarchar" type="String" size="24" precision="255" scale="255" />
</table>
<table name="Shippers">
<field name="ShipperID" primary_key="True" type_name="int" type="Int32" size="4" precision="10" scale="255" nullable="False" readonly="True" />
<field name="CompanyName" type_name="nvarchar" type="String" size="40" precision="255" scale="255" nullable="False" />
<field name="Phone" type_name="nvarchar" type="String" size="24" precision="255" scale="255" />
</table>
<table name="Suppliers">
<field name="SupplierID" primary_key="True" type_name="int" type="Int32" size="4" precision="10" scale="255" nullable="False" readonly="True" />
<field name="CompanyName" type_name="nvarchar" type="String" size="40" precision="255" scale="255" nullable="False" />
<field name="ContactName" type_name="nvarchar" type="String" size="30" precision="255" scale="255" />
<field name="ContactTitle" type_name="nvarchar" type="String" size="30" precision="255" scale="255" />
<field name="Address" type_name="nvarchar" type="String" size="60" precision="255" scale="255" />
<field name="City" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="Region" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="PostalCode" type_name="nvarchar" type="String" size="10" precision="255" scale="255" />
<field name="Country" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="Phone" type_name="nvarchar" type="String" size="24" precision="255" scale="255" />
<field name="Fax" type_name="nvarchar" type="String" size="24" precision="255" scale="255" />
<field name="HomePage" type_name="ntext" type="String" size="1073741823" precision="255" scale="255" />
</table>
<table name="Orders">
<field name="OrderID" primary_key="True" type_name="int" type="Int32" size="4" precision="10" scale="255" nullable="False" readonly="True" />
<field name="CustomerID" type_name="nchar" type="String" size="5" precision="255" scale="255" />
<field name="EmployeeID" type_name="int" type="Int32" size="4" precision="10" scale="255" />
<field name="OrderDate" type_name="datetime" type="DateTime" size="8" precision="23" scale="3" />
<field name="RequiredDate" type_name="datetime" type="DateTime" size="8" precision="23" scale="3" />
<field name="ShippedDate" type_name="datetime" type="DateTime" size="8" precision="23" scale="3" />
<field name="ShipVia" type_name="int" type="Int32" size="4" precision="10" scale="255" />
<field name="Freight" type_name="money" type="Decimal" size="8" precision="19" scale="255" />
<field name="ShipName" type_name="nvarchar" type="String" size="40" precision="255" scale="255" />
<field name="ShipAddress" type_name="nvarchar" type="String" size="60" precision="255" scale="255" />
<field name="ShipCity" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="ShipRegion" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<field name="ShipPostalCode" type_name="nvarchar" type="String" size="10" precision="255" scale="255" />
<field name="ShipCountry" type_name="nvarchar" type="String" size="15" precision="255" scale="255" />
<foreignkey>
<referenced_object>
<name>Customers</name>
<name>dbo</name>
<name>Northwind</name>
</referenced_object>
<referencing_field name="CustomerID" referenced_field="CustomerID" />
<referencing_cardinality>Many</referencing_cardinality>
<referenced_cardinality>One</referenced_cardinality>
</foreignkey>
<foreignkey>
<referenced_object>
<name>Shippers</name>
<name>dbo</name>
<name>Northwind</name>
</referenced_object>
<referencing_field name="ShipVia" referenced_field="ShipperID" />
<referencing_cardinality>Many</referencing_cardinality>
<referenced_cardinality>One</referenced_cardinality>
</foreignkey>
<foreignkey>
<referenced_object>
<name>Employees</name>
<name>dbo</name>
<name>Northwind</name>
</referenced_object>
<referencing_field name="EmployeeID" referenced_field="EmployeeID" />
<referencing_cardinality>Many</referencing_cardinality>
<referenced_cardinality>One</referenced_cardinality>
</foreignkey>
</table>
<table name="Products">
<field name="ProductID" primary_key="True" type_name="int" type="Int32" size="4" precision="10" scale="255" nullable="False" readonly="True" />
<field name="ProductName" type_name="nvarchar" type="String" size="40" precision="255" scale="255" nullable="False" />
<field name="SupplierID" type_name="int" type="Int32" size="4" precision="10" scale="255" />
<field name="CategoryID" type_name="int" type="Int32" size="4" precision="10" scale="255" />
<field name="QuantityPerUnit" type_name="nvarchar" type="String" size="20" precision="255" scale="255" />
<field name="UnitPrice" type_name="money" type="Decimal" size="8" precision="19" scale="255" />
<field name="UnitsInStock" type_name="smallint" type="Int16" size="2" precision="5" scale="255" />
<field name="UnitsOnOrder" type_name="smallint" type="Int16" size="2" precision="5" scale="255" />
<field name="ReorderLevel" type_name="smallint" type="Int16" size="2" precision="5" scale="255" />
<field name="Discontinued" type_name="bit" type="Boolean" size="1" precision="255" scale="255" nullable="False" />
<foreignkey>
<referenced_object>
<name>Categories</name>
<name>dbo</name>
<name>Northwind</name>
</referenced_object>
<referencing_field name="CategoryID" referenced_field="CategoryID" />
<referencing_cardinality>Many</referencing_cardinality>
<referenced_cardinality>One</referenced_cardinality>
</foreignkey>
<foreignkey>
<referenced_object>
<name>Suppliers</name>
<name>dbo</name>
<name>Northwind</name>
</referenced_object>
<referencing_field name="SupplierID" referenced_field="SupplierID" />
<referencing_cardinality>Many</referencing_cardinality>
<referenced_cardinality>One</referenced_cardinality>
</foreignkey>
</table>
</schema>
</database>
</metadata>
Declare #temp Table(result xml)
DECLARE #value varchar(50)
insert into #temp values((
Select DB_NAME() AS '#name',
(SELECT sc.SCHEMA_NAME as '#name' ,
(SELECT TABLE_NAME as '#name',
(
SELECT COLUMN_NAME as '#name',
t.name as '#type_name',
case DATA_TYPE
when 'nvarchar'
then 'String'
when 'varchar'
then 'String'
when 'int'
then 'Int32'
when 'bigint'
then 'Int64'
when 'bit'
then 'Boolean'
when 'datetime'
then 'DateTime'
else null
end as '#type',
NUMERIC_PRECISION as '#precision',
NUMERIC_SCALE as '#scale',
case data_type
when 'nvarchar'
then CHARACTER_MAXIMUM_LENGTH
when 'varchar'
then CHARACTER_MAXIMUM_LENGTH
else null
end as '#size',
INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE AS '#nullable',
'true' as '#readonly',
'true'as '#primary_key'
FROM INFORMATION_SCHEMA.COLUMNS
INNER JOIN
sys.types t ON TYPE_ID(INFORMATION_SCHEMA.COLUMNS.DATA_TYPE) = t.user_type_id
LEFT OUTER JOIN
sys.index_columns ic ON t.name=INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
--ON ic.column_id = INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
LEFT OUTER JOIN
sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
where INFORMATION_SCHEMA.COLUMNS.TABLE_NAME =
INFORMATION_SCHEMA.TABLES.TABLE_NAME
order by INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION
For XML PATH ('field'), type
)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='my schema'
ORDER BY TABLE_NAME ASC
For XML PATH ('table'),type)
from INFORMATION_SCHEMA.SCHEMATA sc where sc.SCHEMA_NAME IN(Select distinct TOP 1 ta.TABLE_SCHEMA from
INFORMATION_SCHEMA.TABLES ta )
For XML PATH('schema'),type)
For XML PATH('database'),Root('metadata')))
select * from #temp
The above code is used to generate just table data
The below stored procedure is used to generate the foreign key constraint
(select INFORMATION_SCHEMA.TABLE_CONSTRAINTS.TABLE_NAME as 'name',
INFORMATION_SCHEMA.TABLE_CONSTRAINTS.TABLE_SCHEMA as 'name',
INFORMATION_SCHEMA.TABLE_CONSTRAINTS.TABLE_CATALOG as 'name' ,
referencing_field_name =FK_COLS.COLUMN_NAME,
referenced_field = PK_COLS.COLUMN_NAME,
referencing_cardinality='Many',
referenced_cardinality='one'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS REF_CONST
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS
ON REF_CONST.CONSTRAINT_CATALOG = INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_CATALOG
AND REF_CONST.CONSTRAINT_SCHEMA = INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_SCHEMA
AND REF_CONST.CONSTRAINT_NAME = INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_NAME
AND INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY'
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
ON REF_CONST.UNIQUE_CONSTRAINT_CATALOG = PK.CONSTRAINT_CATALOG
AND REF_CONST.UNIQUE_CONSTRAINT_SCHEMA = PK.CONSTRAINT_SCHEMA
AND REF_CONST.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
AND PK.CONSTRAINT_TYPE = 'PRIMARY KEY'
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE FK_COLS ON REF_CONST.CONSTRAINT_NAME = FK_COLS.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE PK_COLS ON PK.CONSTRAINT_NAME = PK_COLS.CONSTRAINT_NAME
FOR XML RAW ('referenced_object'), ELEMENTS, ROOT ('foreign key'))
We are facing an issue in integrating these two stored procedures
So, Is there any way to generate the xml file in the same format dynamically

Resources