我必须bcp.exe从 PowerShell 脚本调用。我的代码是:
$dataBase = 'MyDb'
$ProdEinheitTable = 'dbo.ProdEinheit'
$ProzessdatenTable = 'dbo.Prozessdaten_aktuell'
$sqlServerUserName = 'sa'
$sqlServerPassword = 'Password'
$server = 'MSSQLLocalDB'
$bcp = & 'C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.exe'
Run Code Online (Sandbox Code Playgroud)
我bcp像这样调用该实用程序:
$bcp_args = "$bcp $dataBase.$ProdEinheitTable IN $datFileName -f $fmtFileName -U $sqlServerUserName -P sqlServerPassword -S $server -n"
Invoke-Expression $bcp_args
Run Code Online (Sandbox Code Playgroud)
它给了我错误
用法::术语“用法:”未被识别为 cmdlet、函数、
脚本文件或可运行的程序。检查名称的拼写,或者是否有路径
包含在内,请验证路径是否正确,然后重试。
在行:1 字符:1
+ 用法:C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.exe { ...
+~~~~~~
+ CategoryInfo : ObjectNotFound: (usage::String) [], CommandNotFoundException
+ FullQualifiedErrorId : CommandNotFoundException
如果我&从字符串中删除,我会得到异常
C:\Program :术语“C:\Program”不被识别为 cmdlet 的名称,
函数、脚本文件或可运行的程序。检查名称的拼写,或
如果包含路径,请验证路径是否正确,然后重试。
在行:1 字符:1
+ C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.exe MyDb.dbo ...
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Program:String) [], CommandNotFoundException
+ FullQualifiedErrorId : CommandNotFoundException
如何bcp从 PowerShell调用?
您的代码没有按照您期望的方式工作的原因(除了您不应该首先使用Invoke-Expression的事实)是因为您的期望似乎是
$bcp = & 'C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.exe'
Run Code Online (Sandbox Code Playgroud)
将定义某种命令调用别名。事实并非如此。该语句bcp.exe不带参数直接调用,并将命令的输出存储在变量中$bcp(常规输出,而不是错误输出)。
这应该有效:
$dataBase = 'MyDb'
$ProdEinheitTable = 'dbo.ProdEinheit'
$ProzessdatenTable = 'dbo.Prozessdaten_aktuell'
$sqlServerUserName = 'sa'
$sqlServerPassword = 'Password'
$server = 'MSSQLLocalDB'
$bcp = 'C:\Program Files\Microsoft SQL Server\110\Tools\Binn\bcp.exe'
$bcp_args = "${dataBase}.${ProdEinheitTable}", 'IN', $datFileName,
'-f', $fmtFileName, '-U', $sqlServerUserName,
'-P', $sqlServerPassword, '-S', $server, '-n'
& $bcp @bcp_args
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2990 次 |
| 最近记录: |