讀取文本文件的所有行並寫入到數據庫


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;
}
}
}


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com