MySqlBulkLoader 小数分隔符问题 c#



我在导入包含带有","的数字作为小数分隔符的 CSV 文件时遇到问题。 我认为可以使用MySqlBulkLoader类的表达式属性修复此问题,但我不知道如何解决。 这是我的代码:

MySqlBulkLoader bulkLoad = new MySqlBulkLoader(mySqlCon)
bulkLoad.Local = true;
bulkLoad.ConflictOption = MySqlBulkLoaderConflictOption.Ignore;
bulkLoad.TableName = "file_na";
bulkLoad.FieldTerminator = "#";
bulkLoad.LineTerminator = "rn";
bulkLoad.FileName = naziv;
bulkLoad.NumberOfLinesToSkip = 1;
i =bulkLoad.Load();

在 CSV 文件中,其中一个字段的值为 1045,15。 当我将CSV导入数据库时,值已更改为1045.00。 我试图在加载到数据库之前将","替换为"."。 我发现了如何在 mysql 中修复它,以及如何使用批量加载器类修复。

LOAD DATA INFILE 'file.csv' INTO TABLE dados_meteo
(@var1, @var2)
SET column1 = REPLACE(@var1, ',', '.'), column2 = REPLACE(@var2, ',', '.')

提前致谢

我找到了解决方案:) 必须在连接字符串中添加第一个"允许用户变量 = True" 然后定义表列并添加不带"set"的表达式(set col3=replace(@d,',','.((

MySqlBulkLoader bulkLoad = new MySqlBulkLoader(mySqlCon)
{Columns={"col1","col2","@d"}
Expressions={"col3=replace(@d,',','.')"}
}
bulkLoad.Local = true;
bulkLoad.ConflictOption = MySqlBulkLoaderConflictOption.Ignore;
bulkLoad.TableName = "file_na";
bulkLoad.FieldTerminator = "#";
bulkLoad.LineTerminator = "rn";
bulkLoad.FileName = naziv;
bulkLoad.NumberOfLinesToSkip = 1;
i =bulkLoad.Load();

最新更新