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文本文件 ...
随机推荐
- maven添加jetty插件
pom.xml中增加jetty的配置 <properties> <jetty-version>8.1.13.v20130916</jetty-version> &l ...
- WPF 之 利用Visibility属性进行Item模板切换
前台Xaml如下: <Grid.Resources> <xx:AccountStatusToVisibility x:Key="AccountStatusToVisibil ...
- WWH学习模式
WWH是"What+Why+How"的简称,是对学习方法最完美的概括."如果不按照WWH这种模式来教学,90%的结果是老师没教好,学生学不好." 1.What( ...
- Tested work with China Digiprog 3 4.94 mileage programmer
I was thinking about buying a Digiprog3 clone from China I know that YANHUA Digiprog 3 is the best a ...
- 错误"Lc.exe 已退出,代码 -1 "
今天做项目的时候突然出现编译不通过,错误为Lc.exe已退出,代码为-1.这让我郁闷了至少30分钟,后来上网查了一下,才知道原因所在,我们项目中使用了第三方组件(Infragistics)造成的,至于 ...
- 【Shell脚本学习7】Shell脚本学习指南分享
http://yunpan.cn/cyARvNiaiLhfR (提取码:2878)
- iOS开发-解决AVAudioRecorder录音文件无法保存的问题
我们在开发iOS客户端APP时,有时候会用到录音的功能,一般会使 AVAudioRecorder 这个类.如下面这样: @interface MyViewController : UIViewCont ...
- Oracle基础 (十二)数学函数
数学函数: ABS(n):求绝对值 ),) FROM DUAL; --获取15的绝对值 结果:, BITAND(X,Y):返回X,Y进行位与(AND)的运算结果 ,), BITAND(,), BITA ...
- ReactNative学习-滑动查看图片第三方组件react-native-swiper
滑动查看图片第三方组件:react-native-swiper,现在的版本为:1.4.3,该版本还不支持Android. 下面介绍的是该组件的一些用法,可能总结的不完整,希望大家一起来共同完善. 官方 ...
- OpenShare常见问题及解答
OpenShare常见问题及回答: Q:OpenShare可以整合SAP么? A:当然可以,OpenShare是真正完全开放的产品,但要进行二次开发,事实上我们帮我们大部分的客户都整合了SAP,包括数 ...