我使用MySqlBulkLoader类将csv数据导入MYSQL数据库。但由于某种原因,检索到的所有数据都为空(1列除外)。源代码如下。
using System;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string connStr = "server=localhost;user=root;database=database;port=3306;password=123";
MySqlConnection conn = new MySqlConnection(connStr);
MySqlBulkLoader bl = new MySqlBulkLoader(conn);
bl.TableName = "jobs";
bl.FieldTerminator = "\t";
bl.LineTerminator = "\n";
bl.FileName = @"C:\Users\source\repos\WindowsService1\WindowsService1\bin\Debug\data.csv";
bl.FileName = bl.FileName.Replace(@"\\", @"\ \");
bl.NumberOfLinesToSkip = 3;
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
// Upload data from file
int count = bl.Load();
Console.WriteLine(count + " lines uploaded.");
conn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("Done.");
}
}
}
csv文件中有3列,数据库表也是如此。我仔细检查了那些位置的名称。这些没有问题。任何能够捕获此逻辑错误的人都会获得免费的咖啡。 #savemylife
记事本中的CSV文件结构如下所示。
nJobNumber,strClientReference,datPromisedDelivery
5754,in progress,22/02/2018 11:30:00 AM
6524,cancelled,13/03/2018 5:00:00 PM
答案 0 :(得分:3)
您的文件是CSV文件(以逗号分隔的字段)。但是在你的代码中,你说它们被标签分开了。
bl.FieldTerminator = "\t";
需要更改为
bl.FieldTerminator = ",";
另一个问题是以下一行
bl.NumberOfLinesToSkip = 3;
但是,您的示例文件只有一个标题行,因此它可能应该是
bl.NumberOfLinesToSkip = 1;