MySqlBulkLoader设置Columns时要注意的地方

在测试时发现有的表用MySqlBulkLoader一直加不上数据,经过检查,原来是因为表中的列名跟MYSQL的一个关键词对上了,所以在执行时把列名当做关键词进行处理了。

LOAD DATA LOCAL INFILE ':STREAM:364a6d1293584ac4afdaf58a30adc9d2' INTO TABLE test_table CHARACTER SET utf8mb4 FIELDS TERMINATED BY '|' LINES TERMINATED BY '
' (id,name,type,Range) 

如果不指定列名则是:

LOAD DATA LOCAL INFILE ':STREAM:364a6d1293584ac4afdaf58a30adc9d2' INTO TABLE test_table CHARACTER SET utf8mb4 FIELDS TERMINATED BY '|' LINES TERMINATED BY '
' 

这样也是可以正常插入的。

但是如果想指定列名的话,就需要对列名进行处理:

MySqlBulkLoader bulk = new MySqlBulkLoader(connection)
                {
                    FieldTerminator = ",",
                    CharacterSet = "utf8mb4",
                    //FieldQuotationCharacter = '"',
                    //EscapeCharacter = '"',
                    LineTerminator = Environment.NewLine,//"
",
                    FileName = @"D:TestData	est2.csv",
                    NumberOfLinesToSkip = 0,
                    TableName = "test_table",
                };

                for (int i = 0; i < columns.Count(); i++)
                {
                    var oneColumns = columns[i];
                    columns[i] = $"`{oneColumns}`";
                }
                
                bulk.Columns.AddRange(columns);
                return  bulk.Load();

主要是将列名用"`"号包起来就可以了。

原文地址:https://www.cnblogs.com/qiywtc/p/9790741.html