无法使用 cmd.exe 在 C# 中完成执行 sqlldr 命令
Unable to complete execution of sqlldr command in C# using cmd.exe
我正在尝试通过在 cmd.exe 中调用 C# 代码(调度程序)来执行 sqlldr 命令。我正在对 ORACLE 10g 数据库的 table 之一中的 INSERT 记录执行命令。但是我从命令执行中得到的输出是不完整的,如下所示,
SQL*Loader: Release 11.2.0.2.0 - Production on Mon Nov 6 16:23:22 2017
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
下面提到的编码,我已经完成执行 SQL 加载程序命令。
string strCommand = "sqlldr userid=Username/Password@DBNAME, control=xyz.ctl, log=pqr.log";
objProcStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " + strCommand);
//objProcStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
objProcStartInfo.RedirectStandardOutput = true;
objProcStartInfo.UseShellExecute = false;
// Do not create the black window.
objProcStartInfo.CreateNoWindow = false;
objProcStartInfo.RedirectStandardError = true;
objProcess = new System.Diagnostics.Process();
objProcess.StartInfo = objProcStartInfo;
if (!objProcess.Start())
{
ErrorLog.LogError("Scheduler Info.", "Due to some technical reason the process of SQL loader could not started.");
}
else
{
// Get the output into a string
string strResult = objProcess.StandardOutput.ReadToEnd();
// Display the command output.
Console.WriteLine(strResult);
if (!string.IsNullOrEmpty(strResult))
ErrorLog.LogError("Scheduler Info.", "Output of SQL loader command :- " + strResult);
}
如果有人这样做过,请提供suggestion/solution。
我找到了主要问题。当我用提到的列交叉检查数据库的 table 列时。 Ctl 文件,我发现列顺序不匹配。当我执行 sqlldr 命令时更正了列顺序。它执行迅速。
我正在尝试通过在 cmd.exe 中调用 C# 代码(调度程序)来执行 sqlldr 命令。我正在对 ORACLE 10g 数据库的 table 之一中的 INSERT 记录执行命令。但是我从命令执行中得到的输出是不完整的,如下所示,
SQL*Loader: Release 11.2.0.2.0 - Production on Mon Nov 6 16:23:22 2017
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
下面提到的编码,我已经完成执行 SQL 加载程序命令。
string strCommand = "sqlldr userid=Username/Password@DBNAME, control=xyz.ctl, log=pqr.log";
objProcStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " + strCommand);
//objProcStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
objProcStartInfo.RedirectStandardOutput = true;
objProcStartInfo.UseShellExecute = false;
// Do not create the black window.
objProcStartInfo.CreateNoWindow = false;
objProcStartInfo.RedirectStandardError = true;
objProcess = new System.Diagnostics.Process();
objProcess.StartInfo = objProcStartInfo;
if (!objProcess.Start())
{
ErrorLog.LogError("Scheduler Info.", "Due to some technical reason the process of SQL loader could not started.");
}
else
{
// Get the output into a string
string strResult = objProcess.StandardOutput.ReadToEnd();
// Display the command output.
Console.WriteLine(strResult);
if (!string.IsNullOrEmpty(strResult))
ErrorLog.LogError("Scheduler Info.", "Output of SQL loader command :- " + strResult);
}
如果有人这样做过,请提供suggestion/solution。
我找到了主要问题。当我用提到的列交叉检查数据库的 table 列时。 Ctl 文件,我发现列顺序不匹配。当我执行 sqlldr 命令时更正了列顺序。它执行迅速。