Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> calling SQLLDR from C# (ASP.NET)
Hi, I'm trying to call SQLLDR from ASP.NET (C#) to load data from a
text file into a table.
I'm not a windows/microsoft person so if you could give me a hint I'd
appreciate it. I have tried a few ways to call sqlldr but it looks
like the line with sqlldr command is just not being executed... There
are no errors...
I was told that it very well might be a permissions issue but I'm not
sure where to look.
I can execute my bat file from a command line with no problems and it
works fine. Only from C# it doesn't work
Here are my code samples:
version 1:
p.StartInfo.RedirectStandardOutput=false; p.StartInfo.FileName = p_LoadDestinationPath+"load_run.bat"; p.StartInfo.UseShellExecute = false; p.StartInfo.WorkingDirectory = p_LoadDestinationPath; p.StartInfo.RedirectStandardError = true; p.Start(); p.WaitForExit();//wait with no time limit p.Dispose();
version 2:
String strRunCommand = "SQLLDR "+p_DbConnection+" data='"+
p_LoadSourcePath+strTxtFileName+
"' control="+strFileType+".ctl log="+strLogFileName+" SKIP=1 ERRORS=10
BINDSIZE=1048576";
System.IO.File.Create(p_LoadDestinationPath+"load_run.bat").Close);
StreamWriter sw = new
StreamWriterp_LoadDestinationPath+"load_run.bat");
sw.WriteLine(strRunCommand);
sw.Close();
System.Diagnostics.ProcessStartInfo psi = new
System.Diagnostics.ProcessStartInfo("cmd.exe");
psi.UseShellExecute = false; psi.RedirectStandardOutput = true; psi.RedirectStandardInput = true; psi.RedirectStandardError = true; System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi); System.IO.StreamReader strm = System.IO.File.OpenText(p_LoadDestinationPath+"load_run.bat");System.IO.StreamReader sOut = proc.StandardOutput; System.IO.StreamWriter sIn = proc.StandardInput; while(strm.Peek() != -1)
sIn.WriteLine(strm.ReadLine());
}
sIn.WriteLine("EXIT");
proc.Close();
sIn.Close();
sOut.Close();