Ich benutze C#, um alle CSV-Dateien in einem Verzeichnis zu analysieren und fügen Sie jede Datei in separaten MYSQL-Tabellen. Parsing jeden Dateinamens funktioniert, aber ich habe ein Problem mit der Einfügung.CSV-Datei einfügen in MYSQL-Tabellen mit C#
Alle CSV-Dateien haben das gleiche Format:
Name,Mike,John,Parker,Joanne,Claire
4/26/2012 12:20,88.1,98.2,87.4,92.5,78.2
5/16/2012 11:20,78.1,78.2,76.4,86.5,97.2
....
....
Grade12 Tabelle:
Id StudentName Score DateTimeId
für Datum und Uhrzeit Tabelle:
Id DateTime
Wenn ich die CSV-Datei importieren und einfügen in grade12 Tabelle, ich möchte das Ergebnis wie sein:
Id StudentName Score DateTimeId
1 Mike 88.1 1
2 John 98.2 1
3 Parker 87.4 1
4 Joanne 92.5 1
5 Claire 78.2 1
6 Mike 78.1 2
7 John 78.2 2
8 Parker 76.4 2
9 Joanne 86.5 2
10 Claire 97.2 2
....
....
und für den Datetime-Tabelle:
Id DateTime
1 2012-04-26 12:20:00
2 2012-05-16 11:20:00
....
....
so weit ich
- versucht haben, lesen Sie die erste Zeile der CSV (entfernen Sie das erste Element "Name") und Einfügen in student Säule.
- lesen Sie die zweite Zeile von csv (entfernen Sie das erste Element "DateTime Daten ex: 4/26/2012") und fügen Sie in Score-Spalte ein.
- Ich soll DateTime Daten jeder Zeile verwenden und in datetime Tabelle und grade12 Tabelle Fremdschlüssel dazu einfügen, aber ehrlich gesagt bin ich ziemlich verloren.
mein C# -Code:
public void process(string csvFile, string grade)
{
using (MySqlCommand insertCommand = connection.CreateCommand())
{
insertCommand.CommandText =
@"INSERT INTO " + grade + "(StudentName, Score, DateTimeId) VALUES (@StudentName, @Score, @DateTimeId)";
insertCommand.Parameters.Add(new MySqlParameter("@StudentName", "STRING"));
insertCommand.Parameters.Add(new MySqlParameter("@Score", "DECIMAL"));
insertCommand.Parameters.Add(new MySqlParameter("@DateTimeId", "INT32"));
string[] lines = System.IO.File.ReadAllLines(csvFile);
foreach (string line in lines)
{
string trimedLine = line.Trim();
if (line.StartsWith("Name"))
{
studentNames = trimedLine.Split(new[] { ',' }).Skip(1).ToArray();
continue;
}
eachRow = trimedLine.Split(new[] { ',' }).Skip(1).ToArray();
for (int i = 0; i < studentNames.Length; i++)
{
MySqlParameter param = insertCommand.Parameters[0];
param.Value = studentNames[i];
}
for (int i = 0; i < eachRow.Length; i++)
{
MySqlParameter param = insertCommand.Parameters[1];
param.Value = eachRow[i];
}
//I am not sure about this part. This is random data for testing purpose.
int[] datetime = { 1, 2, 3, 4, 5, 6, 7, 8 };
for (int i = 0; i < datetime.Length; i++)
{
MySqlParameter param = insertCommand.Parameters[2];
param.Value = datetime[i];
}
insertCommand.ExecuteNonQuery();
}
}
verbrachte ziemlich viel Zeit, sondern wandert immer noch rund. Daten gehen in die Tabelle, aber sie sehen nicht gut aus. Jede Hilfe wird geschätzt.
Diese Schleife ist falsch: Für (int i = 0; i
CooncilWorker