gpt4 book ai didi

mysql - 将压缩的 csv 文件上传到 mysql 以附加到表中

转载 作者:行者123 更新时间:2023-11-29 12:59:44 25 4
gpt4 key购买 nike

如何将压缩的 csv 文件上传到远程 mysql 实例以追加到表中?

假设 csv 文件中的字段对应于表列。文件中的第一行是标题行。

我应该将什么 nuget 包(如果有)添加到我的 .net 解决方案中?

需要什么代码才能连接到数据库并向其发送压缩文件?

具体来说,这是在 AWS EC2 上运行的代码,用于将文件发送到 AWS RDS 中的 MYSQL 数据库。

最佳答案

您可以使用MySQL .NET connector和MySQL语句加载数据。

如果您在托管数据库的计算机上只有 SQL 访问权限,则可以使用以下命令:

MySqlConnection conn = new MySqlConnection("server=server;uid=username;pwd=xxx;database=db"); 

try
{
conn.Open();
}
catch (MySqlException e)
{
Console.WriteLine("Error connecting to sql server");
}

// maybe add transaction, to be sure everything is done
MySqlTransaction transaction = conn.BeginTransaction();

// read csv line by line
// I use this csv parser http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader
using (CsvReader csv = new CsvReader(new StreamReader("data.csv"), true))
{
while (csv.ReadNextRecord())
{
try
{
MySqlCommand cmd = new MySqlCommand("insert into table ()", conn);
int affected_rows = cmd.ExecuteNonQuery();
}
catch (Exception e)
{
transaction.Rollback();
Console.WriteLine("Error: " + e.Message);
break;
}
}
}

transaction.Commit();
conn.close();

如果你可以在远程机器上创建一些网络服务,我建议使用 MySQL load data infile 语法。速度非常快。

LOAD DATA INFILE 'csv.txt' INTO TABLE rates IGNORE 1 LINES
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' STARTING BY ''

我想您必须在将数据插入表之前解压缩 csv 文件。您可以使用 nuget 安装 MySQL .NET 连接器:

PM> Install-Package MySql.Data -Version 6.8.3 

关于mysql - 将压缩的 csv 文件上传到 mysql 以附加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23511378/

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