Skip to content

Instantly share code, notes, and snippets.

@thebentern
Forked from hanssens/SQL-To-DataTable.cs
Last active February 13, 2016 21:39
Show Gist options
  • Save thebentern/374d585353b811d0ab47 to your computer and use it in GitHub Desktop.
Save thebentern/374d585353b811d0ab47 to your computer and use it in GitHub Desktop.
[C#] SQL Query to Databable to CSV
// Simple example for
// 1.) Read a sql server query to datatable;
// 2.) Export it to .csv
class Program
{
static void Main(string[] args)
{
var connectionString = @"data source=bla bla bla";
var selectQuery = "select * from my-table;";
var table = ReadTable(connectionString, selectQuery);
WriteToFile(table, @"C:\temp\outputfile.csv", false, ",");
Console.WriteLine("Press any key to quit...");
Console.ReadKey();
}
public static DataTable ReadTable(string connectionString, string selectQuery)
{
var returnValue = new DataTable();
var conn = new SqlConnection(connectionString);
try
{
conn.Open();
var command = new SqlCommand(selectQuery, conn);
using (var adapter = new SqlDataAdapter(command))
{
adapter.Fill(returnValue);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
return returnValue;
}
public static void WriteToFile(DataTable dataSource, string fileOutputPath, bool firstRowIsColumnHeader = false, string seperator = ";", Encoding encoding = Encoding.ASCII)
{
var sw = new StreamWriter(fileOutputPath, false, encoding);
int columnCount = dataSource.Columns.Count;
if (!firstRowIsColumnHeader)
{
for (int i = 0; i < columnCount; i++)
{
sw.Write(dataSource.Columns[i]);
if (i < columnCount - 1)
sw.Write(seperator);
}
sw.Write(sw.NewLine);
}
foreach (DataRow drow in dataSource.Rows)
{
for (int i = 0; i < columnCount; i++)
{
if (!Convert.IsDBNull(drow[i]))
sw.Write(drow[i].ToString());
if (i < columnCount - 1)
sw.Write(seperator);
}
sw.Write(sw.NewLine);
}
sw.Close();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment