读取文本文件的所有行并写入到数据库

using System;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;

/*
文本文件 text.txt 内容:
001-002-开封
003-004-湖南

测试表 test 创建SQL:
USE tempdb
GO
IF OBJECT_ID('test') IS NOT NULL
DROP TABLE test
GO
CREATE TABLE test(
	StratNo NVARCHAR(50),
    EndNo NVARCHAR(50),
    Name NVARCHAR(50)	
)
*/
namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("StratNo");
            dt.Columns.Add("EndNo");
            dt.Columns.Add("Name");
            string path = @"C:\Users\Administrator\Desktop\test.txt";

            Stopwatch sw = Stopwatch.StartNew();
            try
            {
                //读取文本文件中的所有行,并存入到 DataTable
                var s = (from line in File.ReadAllLines(path, Encoding.Default)
                         from data in Read(line, dt)
                         select data).ToList();

                //用批量方式快速将数据写入到表
                string connString = @"data source=(local)\sqlserver2014;initial catalog=tempdb;Integrated Security=True;";
                using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connString))
                {
                    bulkCopy.DestinationTableName = "test";
                    bulkCopy.WriteToServer(dt);
                }
                sw.Stop();
                Console.WriteLine("完成所有操作,耗时:{0} 毫秒", sw.Elapsed.Milliseconds);
            }
            catch (Exception ex)
            {
                Console.WriteLine("出现异常:"+ex.Message);
            }

            Console.Read();
        }

        //返回值没什么意义,主要是为填充DataTable.
        //但不返回 string 语法过不了
        private static string Read(string line, DataTable dt)
        {
            DataRow dr = dt.NewRow();
            string[] arr = line.Split('-');
            if (arr.Length >= 3)
            {
                dr["StratNo"] = arr[0];
                dr["EndNo"] = arr[1];
                dr["Name"] = arr[2];
                dt.Rows.Add(dr);
            }
            return string.Empty;
        }
    }
}

你可能感兴趣的:(C#)