【发布时间】:2021-01-11 17:49:08
【问题描述】:
我正在尝试将一个变量从我的 Powershell 脚本传递到 SQLPlus。
我已将变量定义为 $csvStorage(文件夹“csv_files”的文件路径):
Powershell 脚本:
# Set file path to C:\xxxx\xxxx\xxxx\xxxx\csv_files
$filePath = Split-Path -Path $directory -Parent
$csvStorage = Join-Path $filePath -ChildPath "csv_files"
然后我将它作为参数传递给 SQL 脚本:
Powershell 脚本:
# Run sql_queries.sql whilst passing C:\xxxx\xxxx\xxxx\xxxx\csv_files\ into the SQL script
$queryTables = "/c sqlplus $dbUsername/$dbPassword@$dbServiceName @$filePath $csvStorage"
&$sqlPlus $queryTables
最后,在我的 SQL 中使用 '&1' 引用了该变量:
SQL 脚本:
set null null
set heading on
set pagesize 50000
set termout on
spool &1\hc_actual_vs_shadow_inv.csv
SELECT *
FROM hc_actual_vs_shadow_inv
/
spool off
/
exit
但是,查询没有被执行,也没有输出 .csv 文件。但我看不出我做错了什么。任何帮助将不胜感激。
谢谢
【问题讨论】:
-
$sqlPlus的内容是什么? -
@Tomalak
$sqlPlus = "cmd.exe" -
此脚本执行指定目录下的所有sql文件,并在指定目录下创建单独的csv文件。 github.com/dmitrydemin1973/powershell-oracle/blob/master/… 例如 .\run_export_all_tables.ps1 -username SCOTT -password tiger -connect_string ORCL -sql_path C:\export\sql\ -csv_path C:\export\csv\
标签: sql powershell sqlplus