1
   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 并且还添加了参考。

4

2 回答 2

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();
于 2013-09-05T05:24:00.157 回答
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 文件中的列值

于 2020-09-17T13:17:05.543 回答