有一个要求,我试图在我的项目中自动化一个流程,其中需要运行 sql 来进行日常报告。
sql 如下所示:(这是最简单的形式,但我的 sql 有 400 行,下面只是获取结果的示例)。
测试.sql
select * from table
where create_date between &date1 and &date2;
Run Code Online (Sandbox Code Playgroud)
我想创建一个调用 sqlplus 并通过命令提示符传递日期的 bat 文件。日期将自动计算,并将在命令提示符本身中传递。
我尝试过以下命令行:
sqlplus userid/password@db_name @test.sql DATE1 DATE2
Run Code Online (Sandbox Code Playgroud)
但这仍然提示我输入日期 1 和日期 2 的日期,我希望自动从参数中获取这些日期。
您能帮我实现上述目标吗?
当我作为名为'abc'的用户登录到机器时运行PowerShell脚本时,脚本以用户'abc'运行.
我在cmd中运行的命令是:
powershell pshell.ps1
Run Code Online (Sandbox Code Playgroud)
如何使用除当前登录用户之外的特定域用户运行PowerShell脚本?
我的目的是通过Windows命令行运行PowerShell脚本.
我想使用 powershell 运行 sql 脚本,但收到错误“术语‘Invoke-sqlcmd’未被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者包含路径,请验证路径是否正确,然后重试。”
我从某个网站找到了以下代码段。但这仅适用于一个 sql 命令。但我想运行一个 sql 脚本。
有人可以帮忙修改下面的 sql 脚本或任何更好的建议吗?
SQLServer = "ABCD\ABC"
$SQLDBName = "ABC_1223"
$SqlQuery = "select * from table"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database =$SQLDBName;uid=$SQLDBName;pwd= $pwd; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
clear
$DataSet.Tables[0]
Run Code Online (Sandbox Code Playgroud) sql-server powershell powershell-2.0 sql-server-2008 powershell-3.0
我有一个代码来获取一个对话框来选择文件夹名称并显示用户选择的文件夹的名称.
但是如果用户尝试选择取消而不是文件夹路径并且确定,则会抛出错误.
根据我的观察,我使用状态变量并注意到取消后状态变为-1.所以我尝试使用if条件实现注释部分中的代码以退出子.
但是,如果在代码中存在注释部分时选择文件夹,则这似乎不起作用.
没有它,它在选择文件夹时工作正常.
有人可以帮忙吗?它一分钟,我错过了一些东西:(
sub abc()
Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
diaFolder.AllowMultiSelect = False
diaFolder.Title = "Select a folder then hit OK"
diaFolder.Show
'Status = diaFolder.Show
'If Status < 0 Then
'Exit Sub
'End If
a = diaFolder.SelectedItems(1)
MsgBox ("Folder selected is :" & a)
ens sub
Run Code Online (Sandbox Code Playgroud) 当我们在Excel单元格中键入当前日期为08-May-2013时右键单击单元格,当我单击数字作为类别时,我会得到一个数字
Date-08-May-13
Formatted one-41402.00
Run Code Online (Sandbox Code Playgroud)
所以无论如何我可以在sql中获得相同的数字
我试过用这个.
select to_char(sysdate,'J') from dual
Run Code Online (Sandbox Code Playgroud)
但输出是2456421
我知道这是朱利安的价值
但是,任何人都可以帮助我获得输出,因为我正在获得excel ie; 41402
我有一个包含文件名的fodler,其中包含空格.
我创建了一个替换空格的脚本,并使用_而不是""(空格)创建新文件名,并在for循环中运行mv命令.
这在脚本中没有用,并给我以下消息.
Usage: mv [-I] [ -d | -e] [-i | -f] [-E{force|ignore|warn}] [--] src target
or: mv [-I] [-d | -e] [-i | -f] [-E{force|ignore|warn}] [--] src1 ... srcN directory
Run Code Online (Sandbox Code Playgroud)
但是如果我调试shell脚本并单独提取mv命令并运行它,它确实可以正常工作而没有任何问题.
生成的命令看起来像
mv "abc ddd eee.txt" abc_ddd_eee.txt
Run Code Online (Sandbox Code Playgroud)
你能否告诉我为什么在unix盒子上输入的命令工作正常而不是通过脚本?
整个脚本:
for i in *
do
v1=$(echo $i|sed -e 's/^/"/g' -e 's/$/"/g' )
v2=$(echo $v1|sed 's/ /_/g'|
awk -F "[-.]" '{print $2,"_",$1,".",$3}'|
sed 's/ //g'|
sed -e 's/^_//g' -e 's/"$//g'|
sed 's/"//2' )
mv $v1 $v2
done
Run Code Online (Sandbox Code Playgroud) oracle ×2
oracle11g ×2
plsql ×2
powershell ×2
bash ×1
batch-file ×1
cmd ×1
command-line ×1
excel ×1
oracle10g ×1
sh ×1
shell ×1
sql-server ×1
unix ×1
vba ×1
windows ×1