【发布时间】:2022-11-03 18:41:50
【问题描述】:
我想使用 s3 存储桶中的文件将 CSV 文件加载到 MySql 数据库表。我可以使用以下代码从本地驱动器加载文件
using (MySqlConnection myConn = new MySqlConnection("Server = localhost; Database = aaaa; Uid = bbbb; Pwd = ccc"))
{
MySqlBulkLoader loader = new MySqlBulkLoader(myConn);
loader.TableName = "mytable";
loader.FieldTerminator = "|";
loader.LineTerminator = "\n";
loader.NumberOfLinesToSkip = 2;
loader.FileName = "c:\file1.csv";
myConn.Open();
int insertCount = bulkLoader.Load();
myConn.Close();
}
您能否提供一些示例以从 s3 存储桶加载 csv 文件?谢谢你。
【问题讨论】:
-
我的方法:找出
MySqlBulkLoader是否可以接受Stream而不是文件名。假设可以,从 S3 存储对象打开一个Stream并将其传递给加载程序。如果这不可行,请将 CSV 文件从 S3 下载到本地文件,然后将该本地文件传递给加载程序,然后在完成后清理该本地文件。 -
如果您将 csv 文件下载到本地驱动器?
-
我将尝试流选项,但我想从 s3 存储桶中加载它
-
@akabaka 您能否解释一下“希望它从 S3 存储桶中加载它”是什么意思?你是说你希望它以某种方式从文件“直接”到数据库表吗? Diplomacy 建议将文件作为流读取并将其传递给 BulkLoader,这基本上与您所能达到的一样接近 - 文件数据将不得不以一种或另一种方式“通过”您的代码。
-
@Kayndaar,我想使用流或通过将存储桶文件名传递给批量插入将csv文件数据加载到mysql db,但我不确定,如何将流传递给批量插入