Export Umbraco members as CSV/table
A while ago I blogged about how to list umbraco document types as an Excel table which has come in handy a few times. Today I thought I’d blog about how to list Umbraco members in a CSV format with their properties as column headings.
If you’ve ever needed to export your member data from Umbraco this is a handy little script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | DECLARE @cols AS NVARCHAR( MAX ), @query AS NVARCHAR( MAX ); SET @cols = STUFF(( SELECT ',' + QUOTENAME(pt. Name ) FROM ( SELECT [Id] FROM dbo.umbracoNode WHERE nodeObjectType = '9b5416fb-e72f-45a9-a07b-5a9a2709ce43' ) AS mt LEFT OUTER JOIN ( SELECT NodeID, contentType FROM dbo.cmsContent) AS ml ON ml.contentType = mt.id LEFT JOIN dbo.cmsPropertyType AS pt ON pt.contentTypeId = ml.contentType GROUP BY pt.sortOrder, ',' + QUOTENAME(pt. Name ) ORDER BY pt.sortOrder ASC FOR XML PATH( '' ), TYPE ).value( '.' , 'NVARCHAR(MAX)' ),1,1, '' ) set @query = ' SELECT LoginName, Email, createDate, MemberGroup, ' + @cols + ' FROM ( SELECT pt.Name AS MemberFieldName , ISNULL(CASE WHEN dt.DBTYPE = ' 'Ntext' ' THEN CAST(d.[dataNtext] AS NVARCHAR(MAX)) WHEN dt.DBTYPE = ' 'Nvarchar' ' THEN d.dataNvarchar WHEN dt.DBTYPE = ' 'Date' ' THEN CONVERT(nvarchar, d.[dataDate]) WHEN dt.DBTYPE = ' 'Integer' ' THEN CONVERT(nvarchar, d.[dataInt]) ELSE NULL END, NULL) AS MemberData , m.LoginName , m.Email , n.createDate , g.[Text] AS MemberGroup FROM (SELECT [Id] FROM dbo.umbracoNode WHERE nodeObjectType = ' '9b5416fb-e72f-45a9-a07b-5a9a2709ce43' ') AS mt LEFT OUTER JOIN (SELECT NodeID, contentType FROM dbo.cmsContent) AS ml ON ml.contentType = mt.id LEFT JOIN dbo.cmsPropertyType AS pt ON pt.contentTypeId = ml.contentType LEFT JOIN [dbo].[cmsDataType] AS dt ON pt.datatypeID = dt.NodeId LEFT JOIN dbo.cmsPropertyData AS d ON d.contentNodeId = ml.NodeID AND d.propertytypeid = pt.id LEFT JOIN dbo.cmsMember AS m ON m.NodeID = ml.NodeID LEFT JOIN dbo.cmsMember2MemberGroup AS xmg ON xmg.Member = m.NodeID LEFT JOIN dbo.umbracoNode AS g ON g.id = xmg.MemberGroup LEFT JOIN dbo.umbracoNode AS n ON n.id = m.nodeId ) As src PIVOT ( MAX(MemberData) FOR MemberFieldName in (' + @cols + ') ) aS pvt ORDER BY LoginName' print(@query) execute (@query); |
Liked this post? Got a suggestion? Leave a comment