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;
}
}
}
读取文本文件的所有行并写入到数据库
最新推荐文章于 2024-07-23 07:57:52 发布