sql >> Databasteknik >  >> RDS >> Sqlserver

Exportera SQL Server-data till CSV-fil

För vad det är värt, om allt du vill är att ta en fråga och dumpa innehållet någonstans, ser det ut som att du gör lite mer arbete än du måste. Komplexiteten kan öka utmaningen vid felsökning.

Ett riktigt nakna exempel på att läsa en fråga och dirigera utdata till en fil kan se ut så här:

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();

Även om det kanske inte ser dramatiskt kortare ut än koden du listade, tror jag att det är enklare och blir lättare att felsöka direkt. Jag har inte testat det här, så jag kan inte säga säkert att det fungerar, även om jag skulle tro att det är ganska nära.

En annan sak värd att nämna... ingen av dessa är äkta CSV-utdata. Du måste vara säker på att du hanterar inbäddade kommatecken, returtecken, etc, om de finns i någon av utdata. Det är dock enkelt att göra.




  1. Bevilja privilegier på framtida bord i PostgreSQL?

  2. Sortering efter någon kolumn och även efter rand() i MySQL

  3. Hur infogar du en PHP-konstant i en SQL-fråga?

  4. TSQL - Hur använder man GO inuti ett BEGIN .. END-block?