【发布时间】:2018-05-10 15:05:55
【问题描述】:
我有包含 10 行和 4 列的 CSV 文件。我必须在 MySQL 表中批量上传 csv 记录。我的代码成功创建了行,但 MySql Table 的每个单元格都显示 NULL 而不是 CSV 中的原始值。我也尝试过命令“加载数据本地 Infile”,但结果相同......我必须做什么? 这是我的 C# 代码
public ActionResult Index(HttpPostedFileBase UploadExcel)
{
string FilePath = Server.MapPath("~/Uploads/" + UploadExcel.FileName);
UploadExcel.SaveAs(FilePath);
FilePath = FilePath.Replace("\\", "/");
string connectionString = ConfigurationManager.ConnectionStrings["mySqlConnection"].ConnectionString;
MySqlConnection myConn = new MySqlConnection(connectionString);
myConn.Open();
string TableName = "testTable_TEMP";
var bl = new MySqlBulkLoader(myConn);
bl.TableName = TableName;
FilePath = FilePath.Replace("\\", "/");
bl.FieldTerminator = ",";
bl.LineTerminator = "\n";
bl.FileName = FilePath;
bl.NumberOfLinesToSkip = 1;
var count = bl.Load();
myConn.Close();
return View();
}
【问题讨论】:
-
为什么要更改
FilePath变量中的文件夹分隔符?你检查过FilePath的值吗?文件存在吗? -
是的,首先文件保存在适当的文件夹中,然后我正在访问该文件。并且文件也放置在物理路径上。
-
如果服务器是 Windows,
FilePath.Replace("\\", "/");很可能会返回一个不存在的文件。 -
它正在运行。感谢 bradbury9 提供宝贵的解决方案。
-
很高兴为您提供帮助,并给出问题原因的答案,以便您将其标记为有用。
标签: c# mysql asp.net-mvc csv