sql >> Databáze >  >> RDS >> Sqlserver

Export dat SQL Server do souboru CSV

Za to, co stojí za to, pokud vše, co chcete, je vzít dotaz a někde vysypat obsah, vypadá to, že děláte trochu víc práce, než musíte. Složitost může zvýšit náročnost ladění.

Opravdu holý příklad čtení dotazu a přesměrování výstupu do souboru může vypadat takto:

SqlConnection sqlCon = new SqlConnection("REMOVED");
sqlCon.Open(); 

SqlCommand sqlCmd = new SqlCommand(
    "Select * from products.products", sqlCon);
SqlDataReader reader = sqlCmd.ExecuteReader();

string fileName = "test.csv";
StreamWriter sw = new StreamWriter(fileName);
object[] output = new object[reader.FieldCount];

for (int i = 0; i < reader.FieldCount; i++)
    output[i] = reader.GetName(i);

sw.WriteLine(string.Join(",", output));

while (reader.Read())
{
    reader.GetValues(output);
    sw.WriteLine(string.Join(",", output));
}

sw.Close();
reader.Close();
sqlCon.Close();

I když to nemusí vypadat dramaticky kratší než kód, který jste uvedli, myslím si, že je jednodušší a bude snazší ladit hned po vybalení. Netestoval jsem to, takže nemohu s jistotou říci, že to funguje, i když si myslím, že je to docela blízko.

Další věc, která stojí za zmínku... ani jedno z toho není skutečný výstup CSV. Musíte si být jisti, že zpracováváte vložené čárky, návratové znaky atd., pokud by byly v některém z výstupů. To je však dost snadné.




  1. Snadno převádějte své dotazy Microsoft Access pomocí tohoto nového nástroje!

  2. Dynamicky vytvářet sloupce sql

  3. Získejte nejběžnější hodnotu pro každou hodnotu jiného sloupce v SQL

  4. Získejte počet číslic za desetinnou čárkou s plovoucí desetinnou čárkou (s desetinnou částí nebo bez ní)