winform 批量导入本地sql文件,批量导入mdb(access)文件到sqlserver
0.数据库连接
private void button1_Click(object sender, EventArgs e)
{
this.btnUpdate.Enabled = false;
#region 数据库连接
connStr.Append("Data Source=");
connStr.Append(txtServer.Text);
connStr.Append(";");
connStr.Append("Initial Catalog=");
connStr.Append(txtDataBase.Text);
connStr.Append(";");
connStr.Append("User ID=");
connStr.Append(txtUser.Text);
connStr.Append(";");
connStr.Append("Password=");
connStr.Append(txtPass.Text);
this.labShow.Text = "正在查找文件......";
using (SqlConnection conn = new SqlConnection(connStr.ToString()))
{
//MessageBox.Show(connStr.ToString());
ListSql = new List<string>();
ListMdb = new List<string>();
GetDirectories(Application.StartupPath);
//ListSql.Sort(new MySort()); foreach (var item in ListSql)
{
GetSqlFile(item);
}
foreach (var item in ListMdb)
{
ReadDataToSQL(item);
}
MessageBox.Show("升级成功......");
this.btnUpdate.Enabled = true;
Application.Exit();
}
#endregion }
1.查找文件与目录
#region 查找目录与文件
public void GetDirectories(string path)
{ string[] fileNames = Directory.GetFiles(path);
string[] directories = Directory.GetDirectories(path);
foreach (string file in fileNames)
{
string str = System.IO.Path.GetFullPath(path);
if (System.IO.Path.GetExtension(file).ToLower() == ".sql")
{
ListSql.Add(file);
//GetSqlFile(file);
}
if (System.IO.Path.GetExtension(file).ToLower() == ".mdb")
{
//ReadDataToSQL(file);
ListMdb.Add(file);
}
} foreach (string dir in directories)
{
GetDirectories(dir);
}
}
#endregion
2.获取本地脚本文件、执行sql文件
foreach (var item in ListSql)
{
GetSqlFile(item);
}
#region 批量执行本地的sql文件到sqlServer数据库
/// <summary>
/// 获取本地的脚步文件
/// </summary>
private void GetSqlFile(string path)
{
try
{
string obj_file = this.GetFileReader(path);
obj_file = obj_file.Replace("GO", " | ").Replace("go", " | ");//替换符号
string[] obj_filelist = obj_file.Split('|');
foreach (string str in obj_filelist)
{
this.labShow.Text ="正在执行脚本"+ Path.GetFileName(path)+"文件......";
this.ExecSQL(str);
}
// MessageBox.Show("导入成功!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch
{ }
}
/// <summary>
/// 获取文件内容
/// </summary>
/// <param name="path">文件路径</param>
/// <returns>返回sql文件的执行语句</returns>
public string GetFileReader(string path)
{
try
{
using (StreamReader sr = new StreamReader(path, Encoding.Default))
{
String line = sr.ReadToEnd(); return line;
}
}
catch (Exception ex)
{
return "";
}
}
/// <summary>
/// 执行SQL
/// </summary>
/// <param name="SQL"></param>
public void ExecSQL(string SQL)
{
try
{
using (SqlConnection conn = new SqlConnection(@"Data Source=(local);Initial Catalog=数据库名称;User ID=用户名;Password=密码"))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(SQL, conn))
{
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "|" + ex.Source); }
}
#endregion
3.获取mdb本地文件,执行读取与插入操作
#region 批量执行本地的mdb文件到sqlServer数据库
/// <summary>
///读取access数据库中的数据并插入到sqlServer数据库表中
/// </summary>
/// <param name="file">文件路径</param>
private void ReadDataToSQL(string file)
{
try
{
this.labShow.Text = "正在执行脚本" + Path.GetFileName(file) + "文件......";
string StrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Data source=" + file + "";
OleDbConnection adoConn = new OleDbConnection(StrConn);
//adoConn.ConnectionString = StrConn;
adoConn.Open();
DataTable dt = adoConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
for (int i = ; i < dt.Rows.Count; i++)
{
String tableName = dt.Rows[i]["TABLE_NAME"].ToString(); //从ACCESS数据库查询数据
string sql1 = "select * from " + tableName;
DataSet Myds = new DataSet();
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql1, adoConn);
//填充数据
dataAdapter.Fill(Myds, tableName);
//插入数据
BulkData(Myds, tableName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
/// <summary>
/// 执行Sql语句
/// </summary>
/// <param name="_Ds">DataSet数据集</param>
/// <param name="_TableName">表名称</param>
/// <returns>是否成功</returns>
public bool BulkData(DataSet _Ds, string _TableName)
{
SqlConnection SqlCon = new SqlConnection();
SqlCon.ConnectionString = connStr.ToString();
SqlCon.Open();
SqlBulkCopy SqlBulk = new SqlBulkCopy(SqlCon);
SqlBulk.DestinationTableName = _TableName;
try
{
SqlBulk.WriteToServer(_Ds.Tables[], DataRowState.Unchanged);
return true;
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
finally
{
SqlCon.Close();
SqlCon.Dispose();
SqlBulk.Close();
}
}
#endregion
winform 批量导入本地sql文件,批量导入mdb(access)文件到sqlserver的更多相关文章
- phpMyAdmin导入本地数据库
phpMyAdmin导入本地数据库 在PHPMyAdmin导入数据时,点击导入--执行后出现错误: 您可能正在上传很大的文件,请参考文档来寻找解决方法. 可能就是因为数据库太大的原因. 那么如何 才能 ...
- Oracle:从SQL文件批量导入数据
进入DOS界面. 进入SQL文件目录. 在命令提示下运行SqlPlus,c:\sql>sqlplus user_name/password@net_service_name 指定SQL执行日志文 ...
- sql文件批量导入mysql数据库
有一百多个sql文件肿么破?一行一行地导入数据库肯定是极其愚蠢的做法,但是我差点就这么做了... 网上首先找到的方法是:写一个xxx.sql文件,里边每一行都是source *.sql ...,之后再 ...
- 批量将制定文件夹下的全部Excel文件导入微软SQL数据库
以下代码将c:\cs\文件夹下的全部Excle中数据导入到SQL数据库 declare @query vARCHAR(1000) declare @max1 int declare @count1 i ...
- SQL Server批量数据导出导入Bulk Insert使用
简介 Bulk insert命令区别于BCP命令之处在于它是SQL server脚本语句,它可以将本地或远程的文件数据批量导入数据库,速度非常之快:远程文件必须共享才行, 文件路径须使用通用约定(UN ...
- ABAP-2-会计凭证批量数据导入本地ACCESS
ABAP-1-会计凭证批量数据导入本地ACCESS 上一版本出现问题: A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空.(Access单 ...
- ABAP-1-会计凭证批量数据导入本地ACCESS
公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- Windows Server2003本地用户的批量导入和导出(转)
AD域环境的用户导入和导出 Windows server 2003 批量导入用户---CSVDE 在新搭建的域环境中,有许多的域帐号需要导入,可以采用csvde命令来导入域用户:新建一个txt文本文件 ...
随机推荐
- Linux编程之《只运行一个实例》
概述 有些时候,我们要求一个程序在系统中只能启动一个实例.比如,Windows自带的播放软件Windows Medea Player在Windows里就只能启动一个实例.原因很简单,如果同时启动几个实 ...
- UIView的生命周期总结
序言: loadView.viewDidLoad.viewDidAppear.initWithNibName.awakeFromNib等经常出现在UIViewController中的方法介绍. 这些方 ...
- 2.1.4 扫描器X-Scan查本机隐患
X-Scan是由安全焦点开发的一个功能强大的扫描工具.它采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能. 1.用X-Scan查看本机IP地址 利用X-Scan扫描器来查看本机的 ...
- 菜菜菜鸟学习之JavaWeb 入门1(自己的学习理解,不对之处请大神们多多指教啊)
一.相关基础知识 1.C/S(Client/Server)架构和B/S(Browser/Server)架构 首先说C/S架构,简单讲其实很常见,类似QQ等需要下载客户端的应用程序就是建立在C/S架构中 ...
- 用javascript获取屏幕高度和宽度等信息
网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.body.offsetWi ...
- 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验
[阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...
- 数码相框之Makefile笔记
本程序的Makefile分为3类:1. 顶层目录的Makefile2. 顶层目录的Makefile.build3. 各级子目录的Makefile 一.各级子目录的Makefile: 它最简单,形式如下 ...
- Linux之用户管理
1.添加普通用户 [root@server ~]# useradd chenjiafa //添加一个名为chenjiafa的用户[root@server ~]# passwd chenjiafa ...
- html&css静态页面
状态不好,整晚未眠. 想着敲点代码,遇着复杂的又自己生气,所以就敲了博客园的,总是很纠结"哪样的文字算标题算段落或要用span""什么时候用div比较好"&qu ...
- JavaScript之六种排序法
1.冒泡排序循环的最大值从length递减每次循环只能排好最后一个,然后递减到第一个 function bubbleSort(){ var changedData = new Array(); var ...