首页 > 数据库技术 > 详细

sqlserver大批量数据写入 sqlbulkcopy

时间:2016-03-06 01:07:19      阅读:267      评论:0      收藏:0      [点我收藏+]

 

//代码备份

static void Main(string[] args)
{
string connectionString = "server=.;database=TianYa;uid=sa;pwd=sa;Max Pool Size = 512;";
DateTime time = DateTime.Now;
SqlBulkCopy sqlBC = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);
sqlBC.DestinationTableName = "Users";
DataTable dt = new DataTable("Users");
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("UserName", typeof(string));
dt.Columns.Add("PassWord", typeof(string));
dt.Columns.Add("Email", typeof(string));
DirectoryInfo direct = new DirectoryInfo(@"D:\tianya");
string[] userInfo;
string readStr;
int totalNum = 0;
int partNum = 0;
int totalError = 0;
int partError = 0;
foreach (FileInfo NextFile in direct.GetFiles())
{
partNum = 0;
partError = 0;
Console.WriteLine("正在读取文件:"+NextFile.FullName);
StreamReader sr = new StreamReader(NextFile.FullName, Encoding.Default);
while (sr.Peek() > -1)
{
totalNum++;
partNum++;
readStr = sr.ReadLine();
userInfo = readStr.Split(new char[] { ‘ ‘, ‘,‘ }, StringSplitOptions.RemoveEmptyEntries);
try
{

if (userInfo.Length < 1) continue;
if (userInfo.Length < 2)
dt.Rows.Add(0, userInfo[0].Trim(), DBNull.Value, DBNull.Value);
else if (userInfo.Length < 3)
dt.Rows.Add(0, userInfo[0].Trim(), userInfo[1].Trim(), DBNull.Value);
else
dt.Rows.Add(0, userInfo[0].Trim(), userInfo[1].Trim(), userInfo[2].Trim());
//foreach (string s in userInfo)
//{
// if (s.Length >= 50)
// MessageBox.Show(s.Length.ToString());
//}
}
catch (Exception e1)
{
Console.WriteLine(e1.Message);
totalError++;
partError++;
}
//if (flag % 100000 == 0)
//{
// try
// {
// sqlBC.WriteToServer(dt);
// }
// catch { }
// dt.Clear();
//}
}
sqlBC.WriteToServer(dt);
Console.WriteLine("文件" + NextFile.FullName + "转换完成。本文件共有:" + partNum + " 条数据,其中失败:" + partError + " 条");
dt.Clear();
sr.Close();
}
dt.Dispose();
sqlBC.Close();
Console.WriteLine("转换完成。文件共有:" + totalNum + " 条数据,其中失败:" + totalError + " 条");
Console.WriteLine("共耗时:" + (DateTime.Now - time).TotalSeconds.ToString() + " 秒");
}

sqlserver大批量数据写入 sqlbulkcopy

原文:http://www.cnblogs.com/antions/p/5246322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!