gpt4 book ai didi

c# - 使用c#将csv文件插入MYSQL表

转载 作者:行者123 更新时间:2023-11-29 11:32:33 26 4
gpt4 key购买 nike

我正在使用 C# 解析目录中的所有 .csv 文件并将每个文件插入到单独的 MYSQL 表中。解析每个文件名都有效,但我在插入时遇到问题。

所有 csv 文件具有相同的格式:

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
....
....

12年级表:

Id  StudentName  Score  DateTimeId

日期时间表:

Id  DateTime

当我导入 csv 文件并插入到 Grade12 表中时,我希望结果如下:

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
....
....

对于日期时间表:

Id    DateTime
1 2012-04-26 12:20:00
2 2012-05-16 11:20:00
....
....

到目前为止我已经尝试过

  1. 读取 csv 的第一行(删除第一个元素“Name”)并插入到 StudentName 列中。
  2. 读取 csv 的第二行(删除第一个元素“DateTime data ex: 4/26/2012”)并插入到 Score 列中。
  3. 我应该使用每行的 DateTime 数据并将其插入到 datetime 表和 Grade12 表的外键中,但老实说我很迷失。

我的 C# 代码:

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

逛了好多次,还是闲逛。数据进入表中,但看起来不太好。感谢任何帮助。

最佳答案

恐怕我没有时间编写任何具体的代码示例,但我个人的方法是将过程分为两部分。

第一部分将解析 CSV 文件并将其内容放入类和这些类的列表中,以获取可迭代格式的数据。这允许您在后续步骤中使用可靠的数据模型,而不必在解析数据时实时构建 SQL 查询。这也有助于确保 CSV 的格式正确。

第二部分在此之后运行,并使用之前创建的对象来创建和执行 SQL 查询。由于您已经以更灵活的格式解析了 CSV 中的数据,因此这应该简单得多。

关于c# - 使用c#将csv文件插入MYSQL表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37158624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com