为什么我的 bcp 查询不起作用
本文关键字:不起作用 查询 bcp 我的 为什么 | 更新日期: 2023-09-27 18:33:44
我是 C# 的初学者,我想使用 C# 中的 bcp
实用程序,为此,我编写了以下代码:
string connstr = "Data Source=192.168.50.172;Initial Catalog=CDRDB;User ID=CDRLOGIN;Password=beh1368421";
//string connstr = "Enter your connection string here";
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "bcp";
proc.StartInfo.Arguments = @"select * from CDRTABLE"" queryout c:'filename.csv -S 192.168.50.172 -U CDRLOGIN -P beh1368421 -f -w";
proc.Start();
该代码运行,但filename.csv
未在我的C:'
驱动器上创建。发生了什么事?如何解决这个问题?
对于从System.Diagnostics.Process()
执行Bcp
,应该使用-c
和-CRAW
选项。
下面是示例代码。
string execPath = @"..'bcp.exe";
string localFile = @"MetaData.Table";
string localPath = @"..'OutputFolder";
System.Diagnostics.Process P = new System.Diagnostics.Process();
P.StartInfo.UseShellExecute = false;
P.StartInfo.RedirectStandardOutput = true;
P.StartInfo.RedirectStandardError = true;
P.StartInfo.CreateNoWindow = true;
P.StartInfo.FileName = execPath;
P.StartInfo.Arguments = string.Concat("'"", "MetaData.Table", "'" out '"", localPath, "''", localFile, ".dat'" -c -C RAW -t'"", separator, "'" -S '"", "(local)", "'" -T");
P.Start();
P.WaitForExit();
P.Close();
P.Dispose();
还可以使用 C# 代码中的 BCP,使用BULK INSERT
Transact-SQL 语句并使用 ExecuteNonQuery
SqlCommand
方法。
如下所示的内容将起作用:
sCommandText = "exec xp_cmdShell 'bcp.exe'"+Database + ".." + TableName + " in " +
FileName + " -c -q -U " + UserId + " -P " + Password + "-t ";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sCommandText;
return cmd.ExecuteNonQuery();