总结一句,使用第三开放库:CsvHelper
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using CsvHelper;
using CsvHelper.Configuration.Attributes;
using CsvHelper.Configuration;
namespace Number
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
// new columns
dt.Columns.Add("Number");
dt.Columns.Add("Status");
dt.Columns.Add("End_step");
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ",",
Quote = '"',
Escape = '"'
};
using (var reader = new StreamReader("D:\\Request\\20240802SYDBacklog\\test.csv"))
using (var csv = new CsvReader(reader, config))
{
var records = csv.GetRecords<Record>();
foreach (var record in records)
{
dt.Rows.Add($"{record.Number}", $"{record.Status}", $"{record.End_step}");
}
}
string ConnectionString = @"Data Source=test;initial Catalog=test;Trusted_Connection=SSPI;";
//批量插入目标表数据
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
// clear temp table
SqlCommand Delcommand = new SqlCommand("truncate table [dbo].[test]", conn);
Delcommand.ExecuteNonQuery();
using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(ConnectionString, SqlBulkCopyOptions.UseInternalTransaction))
{
try
{
sqlbulkcopy.BulkCopyTimeout = 60000;
sqlbulkcopy.DestinationTableName = "[dbo].[test]";
sqlbulkcopy.BatchSize = 5000;
sqlbulkcopy.WriteToServer(dt);
sqlbulkcopy.Close();
}
catch (System.Exception ex)
{
throw ex;
}
}
conn.Close();
// Console.WriteLine("Success");
}
}
public class Record
{
public string Number { get; set; }
public string Status { get; set; }
[Name("End step")] // Column name with space
public string End_step { get; set; }
}
}
}