您的位置:首页 > 数据库

使用bcp,循环将本地txt文本导入远程sqlserver中

2009-09-29 15:12 274 查看
txt大文件导入远程数据库,使用bcp效率极高,关于bcp的资料比较少,写了个导入的方法,在项目中应用成功,代码如下
引用空间:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;

private void Page_Load(object sender, System.EventArgs e)


{
// 在此处放置用户代码以初始化页面
string Conn = "data source=192.168.0.1;initial catalog=Test;user id=sa;password=1";
SqlConnection sqlConn = new SqlConnection(Conn);
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlConn;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sqlConn.Open();
cmd.CommandText = "Select * from Files";
DataSet ds = new DataSet();
sda.Fill(ds);

if(ds.Tables[0].Rows.Count>0)


{
string BcpExec = "";
for(int i=0;i<ds.Tables[0].Rows.Count;i++)//循环取本地文件名


{
BcpExec = @"bcp Test..Data in D:/test/";
BcpExec += ds.Tables[0].Rows[i]["path"].ToString();
BcpExec += " -S192.168.0.1 -Usa -P1 -c -t,";//组合bcp命令
Response.Write(ExeCommand(BcpExec));//执行bcp命令并显示操作结果
}
}
}

/**//// <summary>
/// 执行Cmd命令
/// 确保已经server上已经安装sql,否则使用不了bcp命令,
/// 如果没有安装sqlserver需要将bcp.exe拷贝到相应目录(这个条件尚未测试)
/// </summary>
/// <param name="commandText"></param>
/// <returns></returns>
public static string ExeCommand(string commandText)


{
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
string strOutput = null;
try


{
p.Start();
p.StandardInput.WriteLine(commandText);
p.StandardInput.WriteLine("exit");
strOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
}
catch(Exception e)


{
strOutput = e.Message;
}
return strOutput;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: