C#_datatable 写入大量数据_BulkCopy
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes; namespace DataBaseTest
{
/// <summary>
/// InportExportDataTest.xaml 的交互逻辑
/// </summary>
public partial class InportExportDataTest : Window
{
public InportExportDataTest()
{
InitializeComponent();
} private void txtImport_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "文本文件|*.txt";
if (ofd.ShowDialog() != true)
{
return;
}
string filename = ofd.FileName;
//小文件可以用ReadLines,大文件用FileStream
IEnumerable<string> lines = File.ReadLines(filename,Encoding.Default); foreach (string line in lines)
{
string[] segs = line.Split('|');
string name = segs[0];
int age = Convert.ToInt32(segs[1]);
SqlHelper.ExecuteNonQuery("insert into T_DataImport values (@name,@age)",
new SqlParameter("@name",name),new SqlParameter("@age",age)); }
MessageBox.Show("成功导入"+lines.Count()+"条"); } private void btnBulk_Click(object sender, RoutedEventArgs e)
{
string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "文本文件|*.txt";
if (ofd.ShowDialog() != true)
{
return;
}
string filename = ofd.FileName;
//小文件可以用ReadLines,大文件用FileStream
string[] lines = File.ReadLines(filename, Encoding.Default).ToArray(); DateTime startTime = DateTime.Now; DataTable table = new DataTable();
table.Columns.Add("StartTelNum");
table.Columns.Add("City");
table.Columns.Add("TelType");
for(int i=0;i<lines.Length;i++)
{
string line = lines[i];
string[] strs = line.Split('\t'); //TAB键
string startTelNum = strs[0];
string city = strs[1];
city = city.Trim('"');//去掉双引号
string telType = strs[2];
telType = telType.Trim('"'); DataRow row = table.NewRow();//DataRow定义有Internal,所以要new一个row对象
row["StartTelNum"] = startTelNum;
row["City"] = city;
row["TelType"] = telType;
table.Rows.Add(row);//NewRow只是创建,还没有插入,只是本地的table
} using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr))
{
bulkCopy.DestinationTableName="T_Student"; //目标table
bulkCopy.ColumnMappings.Add("StartTelNum", "StartTelNum");//本地table与数据库中table column的mapping
bulkCopy.ColumnMappings.Add("City", "TelArea");
bulkCopy.ColumnMappings.Add("TelType", "TelType");
bulkCopy.WriteToServer(table);
}
TimeSpan ts = DateTime.Now - startTime;
}
}
}
C#_datatable 写入大量数据_BulkCopy的更多相关文章
- Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
背景 Python中,想要打开已经存在的excel的xls文件,然后在最后新的一行的数据. 折腾过程 1.找到了参考资料: writing to existing workbook using xlw ...
- 利用JavaScript数组动态写入HTML数据节点
如果想要使用数组来写入HTML数据,绝对需要的是一个Key值,由Key来引导遍历数组各项:此外,使用DOM原生方法写入文档,用同一个CSS样式渲染它们,这样可以极大地减少开发时间和减少维护成本,此方法 ...
- Python 使用 xlwings 往 excel 中写入一行数据的两种方法
该方法跟上一篇写入一列的方法相反,代码如下: # -*- coding:utf-8 -*- import xlwings as xw list1 = [1,2,3,4,5] list2 = [[1], ...
- 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格
首先来建立一个新的Excel文档,在桌面上点击右键,选择[新建]-[Excel工作表],命名为[新手学员]. 现在这个新Excel文档是空白的,我们接下来会通过按键精灵的脚本来打开并写入一些数据.打开 ...
- java poi 写入大量数据到excel中
最近在利用poi往excel中写入大量数据时,发现excel2003最多只支持65535条,大量数据时容易造成oom,上网查了一下api,发现目前对于2003,每个sheet最多支持65535条,若数 ...
- MATLAB读取写入文本数据最佳方法 | Best Method for Loading & Saving Text Data Using MATLAB
MATLAB读取文件有很多方法.然而笔者在过去进行数据处理中,由于函数太多,相互混杂,与C#,Python等语言相比,反而认为读取文本数据比较麻烦.C#和Python等高级语言中,对于大部分的文本数据 ...
- Java向指定Excel写入读取数据
今天在开发中遇到用户列表导入导出的功能实现,这里了解到使用POI函数库可以完成此任务!特此记录一下 POI Apache POI是Apache软件基金会开放的源码函数库,POI提供API给Java程序 ...
- 【java】ObjectOutputStream & ObjectInputStream 多次写入发生重复写入相同数据的问题
今日份代码,解决 ObjectOutputStream 多次写入发生重复写入相同数据的问题 核心区别如下: package com.sxd.swapping.objoutputstream; impo ...
- .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程
本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...
随机推荐
- apache开源项目--Derby
Apache Derby是Apache软件基金会所研发的开放源码数据库管理系统:由于Derby是一个纯Java程式,因此只需要操作系统支援Java虚拟机,Derby便可执行. Derby是特别地为Ja ...
- (3)java棧
java棧和函数调用的关系图 [名词解释]--->java棧是一块线程的私有空间--->java的棧是先进后出的数据结构.函数返回,则该函数的棧帧被弹出.--->一个函数对应一个棧帧 ...
- iOS7程序后台运行
介绍 这次 iOS7 对程序后台运行进行了加强,但是仅仅是加强而已,要想像 Android 程序那样自由当然就别想了,苹果这么做主要还是出于电池使用时间考虑,但是这次的加强对大部分程序基本够用. 在介 ...
- STL --最常见的容器使用要点
如果只是要找到STL某个容器的用法, 可以参考msdn和C++ Library Reference,msdn 上面的知识点应该是最新的,C++ Library Reference虽古老但是很多经典的容 ...
- mysql日期格式说明符
- 【poj2891】Strange Way to Express Integers
题意: 给出n个模方程x=a(mod r) 求x的最小解 题解: 这就是个线性模方程组的模版题- - 但是有一些要注意的地方 extgcd算出来的解x可能负数 要让x=(x%mo+mo)%mo 而且 ...
- HDU2296——Ring(AC自动机+DP)
题意:输入N代表字符串长度,输入M代表喜欢的词语的个数,接下来是M个词语,然后是M个词语每个的价值.求字符串的最大价值.每个单词的价值就是单价*出现次数.单词可以重叠.如果不止一个答案,选择字典序最小 ...
- hdoj 2151 Worm【动态规划】
Worm Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- UVA 10779 Collectors Problem(最大流)
这个题是很难往网络流上面构思的... 从s向每个物品增加容量为Bob拥有数的弧,然后从每个物品向t增加容量为1的弧(代表种类个数).这时候跑最大流的话,得到的肯定是Bob拥有的初始种类数.那么交换后的 ...
- android http 通信(httpclient 实现)
1.httpclient get 方式 HttpGet httpGet = new HttpGet(url); HttpClient client = new DefaultHttpClient(); ...