C# MySQLBulkLoader未在mysql数据库中插入任何行

C# MySQLBulkLoader未在mysql数据库中插入任何行,c#,mysql,bulkloader,C#,Mysql,Bulkloader,我用这段代码上传了一个数据库中的csv文件,但它没有抛出任何异常,插入的总是显示零 dotnetconnector for mysql已经安装,并且还添加了参考。最后,我使用了这段代码,它对我有用 var bl = new MySqlBulkLoader(mycon); bl.TableName = "tblspmaster"; bl.FieldTerminator = ","; bl.LineTerminator =

我用这段代码上传了一个数据库中的csv文件,但它没有抛出任何异常,插入的总是显示零


dotnetconnector for mysql已经安装,并且还添加了参考。

最后,我使用了这段代码,它对我有用

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

最后,我使用了这段代码,它对我有用

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

如果csv文件和mysql表列不匹配,它可能不会插入数据。 例如,如果您的mysql表有一个带有标识键的主键列,通常csv文件中不会有该列

因此,在上述情况下,mysqlloader不会插入数据。 要解决此问题,请使用columns属性并添加列mysql表列名

下面是一个示例代码

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();
公共异步任务MySqlBulkLoaderAsync(字符串csvFilePath)
{
布尔结果=真;
尝试
{
使用(var conn=new MySqlConnection(_connString+“AllowLoadLocalInfile=True”))
{
var bl=新的MySqlBulkLoader(康涅狄格州)
{
TableName=“PatientDetailStagins”,
超时=600,
FieldTerminator=“,”,
LineTerminator=“\n”,
FieldQuotationCharacter=“”,
FileName=csvFilePath,
NumberOfLinesToSkip=1
};
AddRange(新列表(){“Column1”,“Column2”});
var numberOfInsertedRows=await bl.LoadAsync();
}
System.IO.File.Delete(csvFilePath);
}
捕获(例外情况除外)
{
结果=假;
投掷;
}
返回结果;
}
注意:列映射将根据您在columns属性中添加它们的方式完成。
如果您的csv文件和mysql表列不匹配,它将以相同的顺序访问csv文件中的列值。 例如,如果您的mysql表有一个带有标识键的主键列,通常csv文件中不会有该列

因此,在上述情况下,mysqlloader不会插入数据。 要解决此问题,请使用columns属性并添加列mysql表列名

下面是一个示例代码

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();
公共异步任务MySqlBulkLoaderAsync(字符串csvFilePath)
{
布尔结果=真;
尝试
{
使用(var conn=new MySqlConnection(_connString+“AllowLoadLocalInfile=True”))
{
var bl=新的MySqlBulkLoader(康涅狄格州)
{
TableName=“PatientDetailStagins”,
超时=600,
FieldTerminator=“,”,
LineTerminator=“\n”,
FieldQuotationCharacter=“”,
FileName=csvFilePath,
NumberOfLinesToSkip=1
};
AddRange(新列表(){“Column1”,“Column2”});
var numberOfInsertedRows=await bl.LoadAsync();
}
System.IO.File.Delete(csvFilePath);
}
捕获(例外情况除外)
{
结果=假;
投掷;
}
返回结果;
}
注意:列映射将根据您在columns属性中添加它们的方式完成。
它将以相同的顺序从csv文件中访问列值

为什么路径中使用双斜杠?只有反斜杠需要这样处理。我把双斜杠改成了单斜杠。它现在正在工作,但我不明白为什么它只插入一行。我的csv可能会出现问题,因为当我将该csv打开到记事本时,将不会有逗号。您确定行终止符是
“\r\n”
,而不是
“\n”
?我使用了另一种方法,其工作原理与此类似。我使用了下面的c代码。字符串sql=@“加载数据填充”E:/31十月/SP/SP_文件\u样本1/a1.csv“忽略到表TBLSP主字段中,以“”结尾,以“”行括起来,以“\n”忽略1行(SP)”结尾;MySqlCommand cmd=新的MySqlCommand(sql,mycon);cmd.CommandTimeout=5000000;cmd.ExecuteNonQuery();为什么路径上会出现双斜线?只有反斜杠需要这样处理。我把双斜杠改成了单斜杠。它现在正在工作,但我不明白为什么它只插入一行。我的csv可能会出现问题,因为当我将该csv打开到记事本时,将不会有逗号。您确定行终止符是
“\r\n”
,而不是
“\n”
?我使用了另一种方法,其工作原理与此类似。我使用了下面的c代码。字符串sql=@“加载数据填充”E:/31十月/SP/SP_文件\u样本1/a1.csv“忽略到表TBLSP主字段中,以“”结尾,以“”行括起来,以“\n”忽略1行(SP)”结尾;MySqlCommand cmd=新的MySqlCommand(sql,mycon);cmd.CommandTimeout=5000000;cmd.ExecuteNonQuery();