using System; using System.Data; using System.Data.SqlClient; using System.IO; using System.Text; class SDF2SQL { static void Main() { CreateTextFile(@"c:\temp\mySDF.txt"); SDF2Sql(@"c:\temp\mySDF.txt"); } private static void SDF2Sql(string filename) { SqlConnection con = new SqlConnection(@"server=.\sqlexpress;trusted_connection=yes;"); SqlCommand cmd = new SqlCommand(); con.Open(); cmd.Connection = con; cmd.CommandText = "create database SDFTest"; cmd.ExecuteNonQuery(); cmd.CommandText = @"create table SDFTest..test ( [myDate] [Datetime] null, [first] [varchar](20), [last] [varchar](20), [amount] [money] )"; cmd.ExecuteNonQuery(); cmd.CommandText = @"insert into SDFTest..test ([myDate], [first], [last], [amount]) values (@d,@f,@l,@a)"; cmd.Parameters.Add("@d",SqlDbType.DateTime); cmd.Parameters.Add("@f",SqlDbType.VarChar); cmd.Parameters.Add("@l",SqlDbType.VarChar); cmd.Parameters.Add("@a",SqlDbType.Int); TextReader r = new StreamReader(filename); string line; DateTime dt; while ((line = r.ReadLine()) != null) { if (DateTime.TryParse(line.Substring(0,9),out dt)) cmd.Parameters["@d"].Value = dt; else cmd.Parameters["@d"].Value = DBNull.Value; cmd.Parameters["@f"].Value = line.Substring(10,20); cmd.Parameters["@l"].Value = line.Substring(30,20); cmd.Parameters["@a"].Value = Int32.Parse( line.Substring(50,10) ); cmd.ExecuteNonQuery(); } r.Close(); con.Close(); } private static void CreateTextFile(string filename) { TextWriter w = new StreamWriter(filename); Random r = new Random(); for (int i=0;i<20;i++) { w.WriteLine("{0,-10}{1,-20}{2,-20}{3,10}", "2007/"+r.Next(1,12).ToString()+"/"+r.Next(1,28).ToString(), "FirstName #"+i.ToString(), "LastName #"+i.ToString(), r.Next(1000)); } w.Close(); } }PS: Instead of sending multiple commands I'd use a DataTable instead. This is just for sampling.