BuddyJoe
BuddyJoe

Reputation: 71131

Easiest way to extract SharePoint list data to a separate SQL Server table?

Edited: What is the easiest way to scrape extract SharePoint list data to a separate SQL Server table? One condition: you're in a work environment where you don't control the SQL Server behind the SharePoint Server, so you can't just pull from the UserData table.

Is there there any utilities that you can use to schedule a nightly extract?

Is Microsoft planning any improvement here for "SharePoint 4"?

Update Jan 06, 2009:
http://connectionstrings.com/sharepoint
For servers where office is not installed you will need:
this download

Upvotes: 8

Views: 60937

Answers (12)

Ulf
Ulf

Reputation: 91

There is an ADO.NET adapter for MOSS 2007/2010 and WSS 3.0/4.0 available which goes under the name Camelot .NET Connector for Microsoft SharePoint. It enables you to query lists in SharePoint through standard SQL language, using SharePoint as a data layer.

Besides from the connector, there will be a large number of open source tools and utilities available, such as webparts for exporting data to various formats (XML, MySQL, ..), Joomla plugins, synchronization services, etc.

See http://www.bendsoft.com for more details and to watch webcasts. BendSoft is currently looking for beta-testers and encourage all feedback from the community.

Example:

SELECT * FROM `My Custom SharePoint List`

INSERT INTO Calendar (EventDate,EndDate,Title,Location) VALUES ('2010-11-04 08:00:00','2010-11-04 10:00:00','Morning meeting with Leia','Starbucks')

DELETE FROM `Corp Images` WHERE `Image Name` = 'marketing.jpg' 

NOTE: 20/04/2023

I've found a current version of this connector on the Nuget site... https://www.nuget.org/packages/Camelot.SharePointConnector

Upvotes: 2

Henry Staples
Henry Staples

Reputation:

If you have MOSS installed, the Business Data Catalog can be setup from the Sharepoint Central Administration to automagically synchronize data for you. This is a very powerful product and is included with MOSS. I love it when a client has it enabled so I can take advantage of it.

But some don't and for myself, I've found that if they don't have BDC running and available, inevitably they don't give developers many rights to SQL Server so SSIS is generally out of the question (but maybe that's just me). No problem; for those I'll pull together a lightweight EXE that runs on a scheduled task that queries Lists.asmx and pushes changes to a SQL Server table. Fairly trivial stuff for a simple list where nothing is deleted. Get yourself Visual Studio 2008, CAML Builder, and prepare for a good time. The Lists.asmx results is a little funny in that a list's row's fields are each a single node with a lot of attributes, with no child nodes ... something like this off the top of my head ... just remember that when coding ...

 <z:row ows_Id="1" ows_Field1="A1" ows_Field2="B1">
 <z:row ows_Id="1" ows_Field1="A2" ows_Field2="B2">

Complications in code occur with copying lists where items are deleted, or where there is a parent/child relationship between SP lists. You'd think I'd have some code to send you, but I haven't bothered putting together something I could reuse.

I'm sure there's other ways of handling it, but the scheduled task EXE so far has been reliable for me for multiple apps for multiple years.

Upvotes: 1

Raymund
Raymund

Reputation: 7892

I had written a full article about this with step by step screenshot procedures. It does not use any third party components only SQL BI Tools and Sharepoint. Have a look here

http://macaalay.com/2013/11/01/how-to-archive-sharepoint-list-items-to-sql-server/

Upvotes: 2

user258880
user258880

Reputation: 46

i wrote some code to achieve it, you can find it over here

extract data from moss 2007

Upvotes: 1

feras
feras

Reputation:

I would go with the simego software, but i dont have the money, maybe a 15 days trial is enough!

Upvotes: 1

Sean Cleaver
Sean Cleaver

Reputation:

The 2 minute answer is to use Data Synchronisation Studio from Simego ( http://www.simego.com ) just point it at your List and database and it will sync all the changes.

Upvotes: 2

Kevin I
Kevin I

Reputation:

There is a SSIS SharePoint task you can use to grab the data info a regular dataflow: http://www.codeplex.com/SQLSrvIntegrationSrv

Upvotes: 5

Alex Angas
Alex Angas

Reputation: 60037

Regarding your query about "SharePoint 4", Bill Gates made some remarks at SharePoint Conference 2008. He suggests enriching SQL tables with SharePoint data, and goes on to mention several other potentially cool things. What exactly he means and whether it will help solve your problem in the future is hard to say until we start seeing betas of WSS4 / MOSS 14.

Upvotes: 1

BuddyJoe
BuddyJoe

Reputation: 71131

I wish something like this was much easier to do. Something that didn't need SSIS and was boiled down to a console tool that reads a xml config file for source/target/map info.

http://blogs.officezealot.com/mtblog/archive/2008/06/03/importing-list-data-into-sql.aspx

Upvotes: 0

Toni Frankola
Toni Frankola

Reputation: 1667

As Ryan said I would also suggest using object model / web services to store data to separate SQL database. I think that the best approach is to write an event handler that will trigger on your least and copy the data user inserted/updated.

Upvotes: 1

Ryan
Ryan

Reputation: 24442

Scraping? As in screen scraping? Are you serious? ;)

2 Options

SharePoint Object Model - http://msdn.microsoft.com/en-us/library/ms441339.aspx

SharePoint Web Services - http://msdn.microsoft.com/en-us/library/ms479390.aspx specifically the Lists web service

The web services is how Excel/Access communicate with SharePoint to integrate with its lists.

In fact a bit of Google foo gives these two results :-

Connecting SQL Reporting Services to a SharePoint List

Accessing SharePoint List Items with SQL Server 2005 Reporting Services

Upvotes: 3

Nat
Nat

Reputation: 14305

Depending on the exact nature of the data you need to insert, it may be possible to just use the auto generated RSS feed to get the information you want, a process will need to read the rss and formulate a query.

Otherwise a consoleapp/service could use the object model to do the same thing, but with more control over field information.

Upvotes: 0

Related Questions