private static DbConnection GetConnection(eDatabase databaseType, string connectionString) { switch (databaseType) { case eDatabase.SQLServer: return(new SqlConnection(connectionString)); case eDatabase.Sqlite: return(new SQLiteConnection(connectionString)); case eDatabase.Firebird: return(new FbConnection(connectionString)); case eDatabase.Oracle: return(new OracleConnection(connectionString)); case eDatabase.MySql: return(new MySqlConnection(connectionString)); case eDatabase.Access: return(new OleDbConnection(connectionString)); case eDatabase.DB2: throw new Exception("The IBM DB2 database is no longer supported."); case eDatabase.PostgreSql: return(new NpgsqlConnection(connectionString)); default: throw new Exception("Unspecified database type."); } }
static void Main(string[] args) { int rowNumber = 0; int columnNumber = 0; try { if (!Validate(args)) { return; } string queryFile = args[0]; string csvFile = args[1]; string connectionString = args[2]; eDatabase database = (eDatabase)Convert.ToInt32(args[3]); using (var connection = GetConnection(database, connectionString)) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = File.ReadAllText(queryFile, Encoding.GetEncoding("ISO-8859-1")); command.Connection = connection; command.CommandTimeout = TIMEOUT_MILESSECONDS; using (var dr = command.ExecuteReader()) using (var sw = new StreamWriter(csvFile, false, Encoding.UTF8)) while (dr.Read()) { rowNumber++; for (columnNumber = 0; columnNumber < dr.FieldCount; columnNumber++) { if (columnNumber != 0) { sw.Write(";"); } sw.Write(dr[columnNumber].ToString().Replace("\n", " ").Replace("\r", " ").Trim()); } sw.Write("\n"); } } } } catch (Exception ex) { Console.WriteLine("Error on row {0}, column {1}.", rowNumber.ToString(), columnNumber.ToString()); Console.WriteLine("\n\nError message: " + ex.Message); Console.WriteLine("\n\nDetails: " + ex.ToString()); Console.Read(); } }