var bl = new MySqlBulkLoader(mycon);
bl.TableName = "tblspmaster";
bl.FieldTerminator = ",";
bl.LineTerminator = "\r\n";
bl.FileName = "E://31october//SP//sp_files_sample1//400k sp00 6-19 E.csv";
bl.NumberOfLinesToSkip = 1;
var inserted = bl.Load();
我正在使用此代码在db中上传csv文件,但它没有抛出任何异常并且插入的内容始终显示为零。
已经安装了mysql的dotnetconnector,并且还添加了引用。
答案 0 :(得分:1)
最后我使用了这段代码并为我工作
string sql = @"load data infile 'E:/a1.csv' ignore into table tblspmaster fields terminated by '' enclosed by '' lines terminated by '\n' IGNORE 1 LINES (sp)";
MySqlCommand cmd = new MySqlCommand(sql, mycon);
cmd.CommandTimeout = 5000000;
cmd.ExecuteNonQuery();
答案 1 :(得分:0)
如果您的csv文件和mysql表列不匹配,则可能不会插入数据。 例如,如果您的mysql表具有带有身份密钥的主键列,并且通常您不会在csv文件中包含此列。
因此,在上述情况下,mysqlloader将不会插入数据。 为了解决这个问题,使用columns属性并添加mysql表的列名
这是示例代码。
public async Task<bool> MySqlBulkLoaderAsync(string csvFilePath)
{
bool result = true;
try
{
using (var conn = new MySqlConnection(_connString + ";AllowLoadLocalInfile=True"))
{
var bl = new MySqlBulkLoader(conn)
{
TableName = "patientdetailstagings",
Timeout = 600,
FieldTerminator = ",",
LineTerminator = "\n",
FieldQuotationCharacter = '"',
FileName = csvFilePath,
NumberOfLinesToSkip = 1
};
bl.Columns.AddRange(new List<string>() {"Column1", "Column2"});
var numberOfInsertedRows = await bl.LoadAsync();
}
System.IO.File.Delete(csvFilePath);
}
catch (Exception ex)
{
result = false;
throw;
}
return result;
}
注意:列映射将根据您在columns属性中添加它们的方式完成。 以相同的顺序,它将从csv文件访问列值