数据未批量导入MySQL数据库

时间:2018-02-22 03:05:20

标签: c# mysql

我使用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文件的基本结构如下:enter image description here

MySQL数据库结构:enter image description here

记事本中的CSV文件结构如下所示。

nJobNumber,strClientReference,datPromisedDelivery
5754,in progress,22/02/2018 11:30:00 AM
6524,cancelled,13/03/2018 5:00:00 PM

1 个答案:

答案 0 :(得分:3)

您的文件是CSV文件(以逗号分隔的字段)。但是在你的代码中,你说它们被标签分开了。

 bl.FieldTerminator = "\t";

需要更改为

bl.FieldTerminator = ",";

另一个问题是以下一行

bl.NumberOfLinesToSkip = 3;

但是,您的示例文件只有一个标题行,因此它可能应该是

bl.NumberOfLinesToSkip = 1;
相关问题