我写了一个程序,需要大范围导出导入数据到SQL Sever中,数据量大约是400w条,上网搜了好久,最后决定使用BCP 命令。。。bcp命令是这么写的:
BCP “SQL 语句" queryout 文件路径.txt -c -k -t"\t" -r"\n" -S "服务器名" -U"用户名" -P"密码"
在cmd上直接调用木有问题,生成的也是全部的;从程序中运行,当数据量小于5w时也木有问题,
但数据量达到百万时,问题出现了

生成的txt文件只能到8M程序就停了!!!实际应该生成400M多的呢!!!!!!
然后将我自己的程序关闭后,,,,,它自己又把文件给生成出来了,全部的!!!400M多的!!!!
我希望达到的效果是全部生成出来,把这个不知道是什么的bug改掉~找了好久,结果,
我用的是backgroundwoker后台调用的,然后再dowork中调用的代理,beginInvoke开始,endInvoke获取返回值,对这块不怎么太熟,想说有没有可能是内存大小限制的问题,上网搜没搜到相关的,只好请教大神们了!!
这是相关代码:
public void DoWork(object sender, DoWorkEventArgs e)
{
DialogResult dr = MessageBox.Show("是否开始导出数据?", "提示", MessageBoxButtons.OKCancel);
exportOutFunc eif = new exportOutFunc(this.exportOut);
IAsyncResult IRIn = eif.BeginInvoke(dr, null, eif);
bool result = eif.EndInvoke(IRIn);
}
private bool exportOut(DialogResult dr)
{
//第二种方法
string temp = exportData.BCPexportOut(exportData.getOutSQL(), data1_FileFolder, "txt");
return true;
}
private string BCPexportOut(string sql,string filepath,string filetype)
{
string path = String.Format(filepath + getDBTableName() + "." + fileType);//获取生成文件路径
string execute = "BCP \"" + sql + "\" queryout "+ path +" -c -k -t\"\\t\" -r\"\\n\" -S \""+ sever +"\" -U\""+userId+"\" -P\""+password+"\"";
string cmdInfo = cmdcon.Execute(execute);//在cmd中执行语句的函数,还是那一套,就不贴了
return cmdInfo;
}
麻烦啦~~