Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Fri Nov 13 08:54:16 CST 2009
OK, I see this is "update thing" not insert/bulkload. -- Shamil -----Original Message----- From: dba-vb-bounces at databaseadvisors.com [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby Sent: Friday, November 13, 2009 5:40 PM To: Discussion concerning Visual Basic and related programming issues. Subject: Re: [dba-VB] What to do, what to do? See my reply to Mark Breen coming up. This is not a bulk load thing. John W. Colby www.ColbyConsulting.com Shamil Salakhetdinov wrote: > Hi John, > > OK, if you're adding several millions rows then SqlBulkLoad can make your > "shot deal" in one shot :) > > -- > Shamil > > -----Original Message----- > From: dba-vb-bounces at databaseadvisors.com > [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby > Sent: Friday, November 13, 2009 5:31 PM > To: Discussion concerning Visual Basic and related programming issues. > Subject: Re: [dba-VB] What to do, what to do? > > In fact this is a one shot deal. I need to do this one time, to one table. > > John W. Colby > www.ColbyConsulting.com > > > Shamil Salakhetdinov wrote: >> Hi John -- >> >> You can also consider using SqlBulkLoad - below is just a simple sample, > and >> you can develop very flexible variations of this approach. SqlBulkLoad >> should be as quick as bcp maybe even quicker. In fact the source for >> SqlBulkLoad could be a SqlDataReader/IDataReader - if you manage this >> IDataReader to have all the data to bulkload then your programs will > become >> as streamlined as they probably have never been, FYI: IDataReader can be >> built in code with data sources being everything as e.g. .csv files etc. >> (and of course .mdb tables or .xls (ISAM) "tables" etc.etc.) >> >> >> using System; >> using System.Collections.Generic; >> using System.Text; >> >> using System.Data; >> using System.Data.SqlClient; >> >> namespace TestConsole.Samples >> { >> public class SqlBulkLoadTest >> { >> public static void Run() >> { >> string connectionString = "Data Source=HAMBURG\\SQL2005;" + >> "Initial Catalog=Northwind;User Id=sa;Password=N/A"; >> using (SqlConnection connection = >> new SqlConnection(connectionString)) >> { >> connection.Open(); >> string sql = "select * from [Shippers]"; >> SqlCommand command = new SqlCommand(sql, connection); >> SqlDataAdapter adapter = new SqlDataAdapter(command); >> >> DataSet dataSet = new DataSet("Shippers"); >> adapter.Fill(dataSet); >> >> Console.WriteLine("*** dataSet ***"); >> foreach (DataRow dataRow in dataSet.Tables[0].Rows) >> { >> object[] items = { dataRow[0], dataRow[1], dataRow[2] > }; >> Console.WriteLine("{0} {1} {2}", >> dataRow[0], dataRow[1], dataRow[2]); >> } >> >> >> (new SqlCommand("delete from [NewShippers]",connection)) >> .ExecuteNonQuery(); >> >> SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString, >> SqlBulkCopyOptions.KeepIdentity); >> bulkCopy.DestinationTableName = "NewShippers"; >> bulkCopy.WriteToServer(dataSet.Tables[0]); >> } >> } >> >> } >> } >> >> -- >> Shamil >> >> -----Original Message----- >> From: dba-vb-bounces at databaseadvisors.com >> [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby >> Sent: Friday, November 13, 2009 3:52 PM >> To: Discussion concerning Visual Basic and related programming issues. >> Subject: Re: [dba-VB] What to do, what to do? >> >> Shamil, >> >> That is precisely what I have in mind, with variations. Then at the end, >> write all updates back to >> SQL Server. >> >> Thanks for the demo code, always helpful. >> >> John W. Colby >> www.ColbyConsulting.com >> >> >> <<< snip >> >>