如何在c#中用代码实现oracle的备份,导出成dmp文件? 如题,不知道可行不可行,有人要求做个小工具,备份出数据库的部分数据。想了一下,感觉完全没有思路,请高手指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我这之前做过,控制台的应用程序,调用执行bat处理需要参考的话留个邮箱 不知道你要的是不是这种形式的,拿去研究一下,这段代码也是实现部分数据的备份。如果好的话别忘了给我加分哦! string[] m_TableName ={ "Table2", "Table1", "Logon" }; try { if (MessageBox.Show("确定要备份数据到E盘吗?", "备份数据", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { this.Cursor = Cursors.WaitCursor; for (int i = 0; i < m_TableName.Length; i++) { string sql; sql = "EXEC master..xp_cmdshell 'bcp LightCtrDB.dbo." + m_TableName[i] + " out E:\\" + m_TableName[i] + ".txt -c -S QRSHZL -U sa -P 123'"; G_SqlExecute.GetExecute(sql); double percentDone = ((Convert.ToDouble(i + 1) / m_TableName.Length) * 100); UpdateProcess(percentDone); } MessageBox.Show("备份数据表成功!"); } else { MessageBox.Show("备份数据失败!"); } } catch (Exception ex) { MessageBox.Show("错误" + ex.ToString()); } finally { this.Cursor = Cursors.Default; toolStripStatusLabel7.Text = null; ProgressBar1.Value = 0; } sql是这样可以备份,不过oracle的exp命令好像是个工具,不知道可不可以这样用,我也是新手,对这不是很清楚。 用Process,调用cmd执行导出命令 给我一份儿代码行吧,,,,[email protected] 用c#调用cmd.exe我发现存在一个问题,就是在导出全部信息,即full=y 的时候,按照上面的程序,会启动cmd.exe和exp.exe两进程,在写xxx.dmp和log文件时,会写一半就卡住不写了,除非关闭导出程序后,exp.exe会接着导出,完后才退出。请问是什么回事??我自己怀疑是导出时,比如导完表接着导出视图时,会有个很短暂等待过程,而这时,exp进程貌似就卡在这,不导出了 是的我也发现这个问题,我用的asp.net c# prosess 调用CMD EXP导出,在导到一半时就停了,然后我要点一下其他页面或刷新本页,才会继续导出。这是怎么回事 求指点这个还是不会 安装问题Vs2010 求源码管理插件 判断数组重复的不打印出来。帮帮忙 datatable.select 性能测试 服务器端上传文件代码如何编写? vs2005调用外部的水晶报表 强烈耻辱!!!!西北航空给全中国人民的耻辱!! 控制台里怎么清除刚Console.Write的文字? C# 两表比对获取差异的算法 如何定义一个与.NET设置数据库连接字符串一样效果的属性? 如何解决只能打印窗体可见部分的问题.
如果好的话别忘了给我加分哦! string[] m_TableName ={ "Table2", "Table1", "Logon" };
try
{
if (MessageBox.Show("确定要备份数据到E盘吗?", "备份数据", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
this.Cursor = Cursors.WaitCursor;
for (int i = 0; i < m_TableName.Length; i++)
{
string sql;
sql = "EXEC master..xp_cmdshell 'bcp LightCtrDB.dbo." + m_TableName[i] + " out E:\\" + m_TableName[i] + ".txt -c -S QRSHZL -U sa -P 123'";
G_SqlExecute.GetExecute(sql);
double percentDone = ((Convert.ToDouble(i + 1) / m_TableName.Length) * 100);
UpdateProcess(percentDone);
}
MessageBox.Show("备份数据表成功!");
}
else
{
MessageBox.Show("备份数据失败!");
}
}
catch (Exception ex)
{
MessageBox.Show("错误" + ex.ToString());
}
finally
{
this.Cursor = Cursors.Default;
toolStripStatusLabel7.Text = null;
ProgressBar1.Value = 0;
}
[email protected]
我发现存在一个问题,就是在导出全部信息,即full=y 的时候,按照上面的程序,会启动cmd.exe和exp.exe两进程,在写xxx.dmp和log文件时,会写一半就卡住不写了,除非关闭导出程序后,exp.exe会接着导出,完后才退出。请问是什么回事??
我自己怀疑是导出时,比如导完表接着导出视图时,会有个很短暂等待过程,而这时,exp进程貌似就卡在这,不导出了