Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Fri Nov 13 08:19:39 CST 2009
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=shms"; 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 >> __________ Information from ESET NOD32 Antivirus, version of virus signature database 4603 (20091113) __________ The message was checked by ESET NOD32 Antivirus. http://www.esetnod32.ru