2017-06-21 2 views
0

Der folgende Code liest Daten aus der Tabelle sqlserver2016 und speichert sie in einem lokalen Ordner ab. aber einige Spalte Wert enthält Komma, die Wert in eine andere Spalte als Trennzeichen verschieben Ich habe Komma verwendet, so wie kann ich das Komma in den Wert, aber nicht verschieben Wert in eine andere Spalte. mein Codebeispiel wie unten. jede Hilfe würde geschätzt werden.Escapezeichen aus Spaltenwert in C#

SqlConnection myADONETConnection = new SqlConnection(); 
myADONETConnection = (SqlConnection)(Dts.Connections["db_connection"].AcquireConnection(Dts.Transaction) as SqlConnection); 



      //Read data from table or view to data table 
      string query = SQLQuery; 
      SqlCommand cmd = new SqlCommand(query, myADONETConnection); 
      //myADONETConnection.Open(); 
      DataTable d_table = new DataTable(); 
      d_table.Load(cmd.ExecuteReader()); 
      myADONETConnection.Close(); 



      string FileFullPath = DestinationFolder + "\\" + FileNamePart + "_" + datetime + FileExtension; 

      StreamWriter sw = null; 
      sw = new StreamWriter(FileFullPath, false); 

      // Write the Header Row to File 
      int ColumnCount = d_table.Columns.Count; 
      for (int ic = 0; ic < ColumnCount; ic++) 
      { 
       sw.Write(d_table.Columns[ic]); 
       if (ic < ColumnCount - 1) 
       { 
        sw.Write(FileDelimiter); 
       } 
      } 
      sw.Write(sw.NewLine); 

      // Write All Rows to the File 
      foreach (DataRow dr in d_table.Rows) 
      { 
       for (int ir = 0; ir < ColumnCount; ir++) 
       { 
        if (!Convert.IsDBNull(dr[ir])) 
        { 
         sw.Write(dr[ir].ToString()); 
        } 
        if (ir < ColumnCount - 1) 
        { 
         sw.Write(FileDelimiter); 
        } 
       } 
       sw.Write(sw.NewLine); 

      } 

      sw.Close(); 

      Dts.TaskResult = (int)ScriptResults.Success; 
+1

was meinst du mit displace verdoppeln müssen? können Sie die Ausgabe Sie die, die Sie erhalten möchten bekommen geben und? – Doruk

+0

Wert in der Datenbankbeispiel, Spaltenname: Daten und Wert: "das ist, Beispiel". Aber wenn ich schreibe es in CSV-Datei Wert fallen in zwei separate Spalte als "das ist" und "Probe", würde ich gerne ganzen Wert "das ist, Beispiel" sollte in einer Spalte in csv sein – Sumon

+1

Kann man nicht doppelt verwenden Zitat wenn es Wert hat, drin? –

Antwort

2

Verpacken Sie alle Ihre Werte in Anführungszeichen. Dies entkommt dem Komma und sollte von allem verstanden werden, mit dem Sie die Datei später analysieren.

Die "ist die Standardmethode in einer csv zu entkommen.

Folgendes sollte den Trick tun. Ist dies Ihre Daten übernimmt enthält keine Anführungszeichen.

sw.Write('"'); 
sw.Write(dr[ir].ToString()); 
sw.Write('"'); 

Wenn Ihre Daten enthält Zitate Sie denen, wie unten dargestellt, um sie zu entkommen.

value1 | value2 | super"special"value 
"value1","value2","super""special""value" 
+0

Toll, vielen Dank, lösen Sie das Problem – Sumon

+0

, wenn es ein Zitat oder andere Zeichen enthalten, wie könnte ich damit umgehen – Sumon

Verwandte Themen