views:

1274

answers:

5

I need to import the data form .csv file into the database table (MS SQL Server 2005). SQL BULK INSERT seems like a good option, but the problem is that my DB server is not on the same box as my WEB server. This question describes the same issue, however i don't have any control over my DB server, and can't share any folders on it.

I need a way to import my .csv programatically (C#), any ideas?

EDIT: this is a part of a website, where user can populate the table with .csv contents, and this would happen on a weekly basis, if not more often

+5  A: 

You have several options:

  1. SSIS
  2. DTS
  3. custom application

Any of these approaches ought to get the job done. If it is just scratch work it might be best to write a throwaway app in your favorite language just to get the data in. If it needs to be a longer-living solution you may want to look into SSIS or DTS as they are made for this type of situation.

Andrew Hare
+1  A: 

Try Rhino-ETL, its an open source ETL engine written in C# that can even use BOO for simple ETL scripts so you don't need to compile it all the time.

The code can be found here: http://sourceforge.net/projects/rhino-tools/

The guy who wrote it: http://www.ayende.com/blog

The group lists have some discussions about it, I actually added bulk insert for boo scripts a while ago. http://groups.google.com/group/rhino-tools-dev http://groups.google.com/group/rhino-tools-dev/browse_thread/thread/2ecc765c1872df19/d640cd259ed493f1

If you download the code there are several samples, also check the google groups list if you need more help.

abombss
A: 

Here is an example. It needs some work, but might be useful.

notandy
A: 

How big are your datasets? Unless they are very large you can get away with parameterized insert statements. You may want to load to a staging table first for peace of mind or performance reasons.

jms
datasets go up to 10k records
roman m
A: 

i ended up using CSV Reader. I saw a reference to it in one of the @Jon Skeet's answers, can't find it again to put the link to it

roman m