void btn_import_Click( object sender, RoutedEventArgs e)
{
// 先读取文件
// 打开对话框,选择文件。
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = " 文本文件|*.txt " ;
if (ofd.ShowDialog()== false )
{
return ;
}
string [] lines = File.ReadLines(ofd.FileName,Encoding.Default).ToArray();
DateTime startTime = DateTime.Now;
// 新建表
DataTable dtTable = new DataTable();
// 给表添加列
dtTable.Columns.Add( " StartTellName " );
dtTable.Columns.Add( " TellType " );
dtTable.Columns.Add( " TellArea " );
// 遍历每一行数据,处理数据,添加到行(DataRow)中
foreach ( string line in lines)
{
string [] strs = line.Split( ‘ \t ‘ ); // \t制表符
string startTellNum = strs[ 0 ];
string tellType = strs[ 1 ].Trim( ‘ " ‘ ); // 去除两边的"
string tellArea = strs[ 2 ].Trim( ‘ " ‘ );
DataRow row = dtTable.NewRow();
row[ " StartTellName " ] = startTellNum; // 给字段赋值
row[ " TellType " ] = tellType;
row[ " TellArea " ] = tellArea;
dtTable.Rows.Add(row); // 添加到一行中
}
// 获取配置文件中连接字符串
string connstr = ConfigurationManager.ConnectionStrings[ " connstr " ].ConnectionString;
// SqlBulkCopy是实现IDisposable接口的,所以必须用using
using (SqlBulkCopy bulk = new SqlBulkCopy(connstr))
{
bulk.DestinationTableName = " T_TellNum " ; // 指定表名
// 本地列名与数据库列名建立连接
bulk.ColumnMappings.Add( " StartTellName " , " starttellnum " );
bulk.ColumnMappings.Add( " TellType " , " telltype " );
bulk.ColumnMappings.Add( " TellArea " , " tellarea " );
// 把dtTable的数据写到数据库
bulk.WriteToServer(dtTable);
}
TimeSpan ts = DateTime.Now - startTime;
// 计算时间
MessageBox.Show(ts.ToString());
}
#code
4、数据库字段
id bigint primary key,
starttellnum nvarchar(30),
telltype nvarchar(30),
tellarea nvarchar(30),
5、可能遇到的问题
解决办法:请检查建立连接字段时字段名是否都正确。
解决方法
1,首先检查数据库表的字段是否过小
2,检查数据中是否有类似单引号的数据,做一下过滤
SqlBulkCopy的使用
标签:
查看更多关于SqlBulkCopy的使用的详细内容...