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文本文件 ...
随机推荐
- 有关EL表达式的一些笔记
JSP页面中使用SUN公司的EL函数库,需要导入JSTL开发包,并在页面中导入EL函数库. <%--引入EL函数库 --%> <%@taglib uri="http://j ...
- 根据当前IP获取当时所在信息
现在很多系统,都要在登录时候,确定当前用户所在的位置.这里记录一个C#使用Http的方式获取当前IP所在的位置信息.主要使用的api是新浪的接口. public partial class sina ...
- asp.net小结
ASP.net是是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术,主要用于WEB开发,与我们以前接触CS开发相比,虽然相似点不少,但不同点也是有很多的,我来简单的总结一下. 一.控件 A ...
- oracle PL/SQL(procedure language/SQL)程序设计(续集)之PL/SQL函数
PL/SQL函数 examples:“ 构造一个邮件地址 v_mailing_address := v_name||CHR(10)|| ...
- 剑指Offer17 二叉树的镜像
/************************************************************************* > File Name: 17_Mirror ...
- Centos安装配置Postfix邮件服务器
发布时间:July 6, 2012 // 分类:Mail // No Comments 在安装邮件服务器之前先了解几个名词,以后会用到: 1 2 3 4 5 6 MUA:用户代理端,即用户使用的写信. ...
- javascript事件代理(委托)
之前有接触过事件代理,但是印象并不深刻.这次记下来加强印象. 用个大家比较常见的代码举例子: html dom结构: <ul id="ul1"> <li>0 ...
- arcsde service(esri_sde)服务启动后又停止
由于最近几天我们公司换了新办公楼,各种服务器得重新配置.当我试图直接将arcsde Service的服务器IP改为现在的地址,就报上面如题的错误. SQL服务器是好的,不用管它,只要确保它是开启的.只 ...
- C#_数组
数组是相同数据类型的元素按一定顺序排列的集合,然后用一个变量名进行命名.新建控制台程序,声明一个静态方法 using System; using System.Collections.Gener ...
- 简单的MySQL数据库主从同步配置
Master配置: 代码如下 复制代码 log-bin = mysql-binserver-id = 1binlog-do-db = powerdns #要同步的数据库 Master新增slave账号 ...