sql >> Database teknologi >  >> RDS >> Sqlserver

Eksporter SQL Server-data til CSV-fil

For hvad det er værd, hvis alt, hvad du vil, er at tage en forespørgsel og dumpe indholdet et sted, ser det ud til, at du laver lidt mere arbejde, end du skal. Kompleksiteten kan øge udfordringen ved fejlfinding.

Et virkelig blottet eksempel på at læse en forespørgsel og dirigere output til en fil kan se sådan ud:

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

Selvom det måske ikke ser dramatisk kortere ud end den kode, du anførte, tror jeg, at det er enklere og nemmere at fejlfinde, lige uden for boksen. Jeg har ikke testet dette, så jeg kan ikke med sikkerhed sige, at det virker, selvom jeg ville tro, det er ret tæt på.

En anden ting, der er værd at nævne... ingen af ​​disse er ægte CSV-output. Du skal være sikker på, at du håndterer indlejrede kommaer, returtegn osv., hvis de er i noget af outputtet. Det er dog nemt nok at gøre.




  1. PSQLEundtagelse:ResultSet er ikke placeret korrekt, måske skal du ringe næste gang

  2. Primære nøgler med Apache Spark

  3. Sådan kontrollerer du en databases kompatibilitetsniveau i SQL Server ved hjælp af T-SQL

  4. Indstil værdi i afhængighed af Helm-diagrammet