Skip to content

Instantly share code, notes, and snippets.

@inedo-builds
Created May 30, 2019 02:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save inedo-builds/80486de84fd413313d54eb80edb821bf to your computer and use it in GitHub Desktop.
Save inedo-builds/80486de84fd413313d54eb80edb821bf to your computer and use it in GitHub Desktop.
Imports Maven feed metadata into ProGet
DECLARE @Target_Feed_Id INT = <Target Feed ID>
DECLARE @xmldata XML =(
SELECT *
FROM OPENROWSET(BULK 'C:\path\to\exported\data.xml', SINGLE_BLOB) AS X)
INSERT INTO [MavenArtifacts]
SELECT [Feed_Id] = @Target_Feed_Id,
[GroupId_Text] = P.A.value('@Group','NVARCHAR(200)'),
[ArtifactId_Text] = P.A.value('@Id', 'NVARCHAR(100)'),
[Name_Text] = P.A.value('@Name', 'NVARCHAR(50)'),
[Description_Text] = P.A.value('@Description', 'VARBINARY(MAX)'),
[ReleaseVersion_Text] = P.A.value('@Release', 'NVARCHAR(50)'),
[LatestVersion_Text] = P.A.value('@Latest', 'NVARCHAR(50)')
FROM @xmldata.nodes('/Package') AS P(A)
INSERT INTO [MavenArtifactFiles]
SELECT M.[MavenArtifact_Id],
[Version_Text] = V.A.value('@Version', 'NVARCHAR(50)'),
[File_Type] = V.A.value('@Type', 'NVARCHAR(50)'),
[File_SHA1_Bytes] = V.A.value('@SHA1', 'BINARY(20)'),
[File_MD5_Bytes] = V.A.value('@MD5', 'BINARY(16)'),
[File_Size] = V.A.value('@Size', 'BIGINT'),
[Updated_Date] = V.A.value('@Updated', 'DATETIME'),
[Cached_Indicator] = V.A.value('@Cached', 'YNINDICATOR'),
[Download_Count] = V.A.value('@Downloads', 'INT'),
[LastDownloaded_Date] = V.A.value('@Downloaded', 'DATETIME'),
[FileName_Text] = V.A.value('@FileName', 'NVARCHAR(100)')
FROM @xmldata.nodes('/Package/Version') AS V(A)
CROSS APPLY V.A.nodes('..') P(A)
INNER JOIN [MavenArtifacts] M
ON M.[Feed_Id] = @Target_Feed_Id
AND M.[GroupId_Text] = P.A.value('@Group', 'NVARCHAR(200)')
AND M.[ArtifactId_Text] = P.A.value('@Id', 'NVARCHAR(100)')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment