2016-09-14 1 views
0

Ich habe eine Tabelle namens statelist die wie folgt aussieht:Wie füge ich Datensätze zu einer Tabelle aus einer Textdatei hinzu?

abbrev nvarchar(2); 
name nvarchar(50); 

Ich habe eine Textdatei state_list.txt genannt, die eine Liste von Staaten in diesem Format hat:

'AL','Alabama' 
'AK','Alaska' 
'AR','Arkansas' 

ich möchte die Daten aus der Textdatei in die Statuslistentabelle. Gibt es eine Art SQL Insert oder anderen Code, um dies zu tun?

+0

Das ist eine CSV ist, analysieren sie oder ein Tool wie CSVHelper verwenden, um eine typisierte Liste zurückzukehren, oder sie direkt an eine Last Datatable mit OLEDB – Plutonix

+0

Geben Sie * etwas * versuchen und eine Frage stellen, wenn Sie stecken bleiben – Plutonix

+0

string [] Teile = Textreader.Readline(). Split (','); com.Parameter.AddWithValue ("@ state", Teile [0]); com.Parameter.AddWithValue ("@ Status_Name", Teile [1]); Die Suche nach diesen Klassen gibt Ihnen eine Idee, wie Sie diese implementieren können. Wenn du nicht weiterkommst, poste deinen Code und das spezifische Problem, das du hast. –

Antwort

0

Eine Möglichkeit, die ich mir vorstellen kann, liest jede Zeile aus der Textdatei mit ReadLine(), und verwenden Sie dann Split(',') in dieser Zeile, um die Abkürzung und den Namen in einem String-Array, und dann können Sie sie einfach zu Ihrer Datenbank hinzufügen while-Schleife.

1

Nun, Sie haben Dinge wie Ihre Datenbank usw. nicht angegeben, aber das wäre meine beste Schätzung. Ich baue dies für eine MsSql-Datenbank, aber Sie können es für mySql in ein paar einfachen Schritten anpassen (zuerst installieren Sie mySQL-Connector). Ich habe keine MsSQl-Datenbank zu meiner Verfügung atm, also habe ich es nicht zu Hause versucht, aber es sollte so funktionieren. Ofcourse bearbeiten Sie die Verbindungszeichenfolge, so dass es Ihre Datenbank passt

 string fileName = "state_list.txt"; 
     var lines = File.ReadLines(fileName); 

     Dictionary<string,string> splitted = new Dictionary<string,string>(); 
     foreach (var line in lines) 
     { 
      string[] splitter = line.Split(','); 
      splitted.Add(splitter[0], splitter[1]); //Add eatch splitted line to dictionary so you can use key and value to insert into table 
     } 


     string connStr ="server = localhost; user = root; database = yourdb; port = 3306; password = xxxxxxxxx;"; // CREATE CONNECTION WITH YOUR DATABASE INFORMATION 
     SqlConnection conn = new SqlConnection(connStr); 
     try 
     { 
      conn.Open(); 
      SqlCommand comm = conn.CreateCommand(); 
      comm.CommandText = "INSERT INTO state_list(code,area) VALUES(@code, @area)"; 

      foreach (KeyValuePair<string, string> pair in splitted) 
      { 
       comm.Parameters.Add("@code", pair.Key); 
       comm.Parameters.Add("@areas", pair.Value); 
       comm.ExecuteNonQuery(); // INSERT EACH PAIR INTO DATABASE 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.ToString()); 
     } 
     conn.Close(); //CLOSE CONNECTION 
0

(1) Analysieren Sie die TXT-Datei und (2) die Datensätze der DB hinzufügen. Sie können Entity Framework oder jedes andere ORM verwenden oder ADO wie @Jurriaan verwenden.

0

Wenn Sie Entity Framework verwenden, können Sie diesen Ansatz verwenden.

using(var context = new YourContext()) 
    { 
     List<YourEntity> entities = new List<YourEntity>(); 
     File.ReadAllLines("PathToFile") 
      .ToList() 
      .ForEach(s => 
      { 
       string[] split = s.Split(','); 
       someList.Add(new YourEntity(split[0], split[1])); // Or set properties if not using a constructor. 
      }); 

     context.YourTable.AddRange(entities); 
     context.SaveChanges(); 
    } 
Verwandte Themen