Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSH/Qshell上的SQL命令_Sql_Ssh_Db2_Ibm Midrange - Fatal编程技术网

SSH/Qshell上的SQL命令

SSH/Qshell上的SQL命令,sql,ssh,db2,ibm-midrange,Sql,Ssh,Db2,Ibm Midrange,我花了相当多的时间搜索溢出的论坛,并使用其他资源试图解决这个问题,但没有成功。如果在其他地方得到答复,我表示歉意。但是,据我所知,它没有 这里是一个小背景。我有一些SQL、Visual basic和自动热键(很棒的程序)的经验。目前,我正在努力学习更多关于SQL的基本知识(也有点生疏) 在我以前和现在的工作中,我经常使用IBM的iSeries(或者一些老手喜欢称之为“大型机”),特别是它的版本:DB2I5/OS上的IBMDB2PE9.7FP5SRMR1 您可能知道,iSeries相关的模拟器有一

我花了相当多的时间搜索溢出的论坛,并使用其他资源试图解决这个问题,但没有成功。如果在其他地方得到答复,我表示歉意。但是,据我所知,它没有

这里是一个小背景。我有一些SQL、Visual basic和自动热键(很棒的程序)的经验。目前,我正在努力学习更多关于SQL的基本知识(也有点生疏)

在我以前和现在的工作中,我经常使用IBM的iSeries(或者一些老手喜欢称之为“大型机”),特别是它的版本:DB2I5/OS上的IBMDB2PE9.7FP5SRMR1

您可能知道,iSeries相关的模拟器有一个功能,允许其用户录制宏以便以后回放。这一特点当然有其局限性。我用visualbasic从头开始编写了一些代码,它们可以执行更灵活的操作。然而,用VB只能做这么多

无论您如何看待iSeries,iSeries的速度都很慢。为了向其数据库/服务器传递/检索信息,其用户受到程序速度的限制(除其他外)。VB宏会受到智能暂停/超时的影响,因为脚本工作需要这些暂停/超时(如自动热键)

iSeries确实有一个功能,您可以使用i5/OS查询管理器查询信息、与库(如果我有权的话是模式?)和表交互。它还有一个FTP功能(我想它也有它的用途)。 我已经开始使用Powershell和SSH/Qshell,我在他们网站上的IBMs广泛支持部分阅读了很多关于iSeries和所有相关内容的文档

以下是问题:

  • qshell/SSH是从数据库中检索信息的有效方法,还是更具体地说,“DB2foriSeries”使用的库(.lib/.file扩展名文件?)

  • 编写SQL脚本并通过SSH/Qshell执行它们难道不会比使用iSeries模拟器本身更快吗

  • 这只能通过端口转发或隧道实现吗

  • 如何通过SSH命令了解更多关于服务器的信息?我可以很容易地浏览服务器目录,查看iSeries中无法看到的文件。它的数据库文件是.lib/.file/.mbr文件扩展名,我无法使用“cat”命令查看这些文件扩展名。我假设这需要使用SQL命令

  • 我是否需要以root用户身份登录才能拥有读/写访问权限并执行任何与SQL相关的操作

  • 如上所述,我使用过ssh/qshell,但我很难启动mysql/sql提示符来执行任何操作(我使用的是openSSH 4.7p1/a unix CLI?),我相信当您成功执行此操作时,会从$改为>。我已经能够做到这一点,但无法执行任何与SQL相关的命令,因此我不确定我做错了什么

    下面是我通过powershell通过ssh登录服务器并尝试执行SQL相关操作的示例:

    PS-H:>ssh-1myusername@blabla.something.com“mysql-u myusername-e'show tables;””

    输入密码:password

    连接的

    无法chdir到主目录/home/myusername:路径名中的文件或目录不存在

    bsh:mysql:执行权限被拒绝

    bsh:无法执行

    与blabla.something.com的连接已关闭

    这是一个正常通过ssh登录的示例:

    ssh-1myusername@blabla.something.com

    无法chdir到主目录/home/myusername:路径名中的文件或目录不存在

    $Mysql

    mysql:执行权限被拒绝

    $“mysql

    “显示数据库;”

    mysql

    '显示数据库;'“没有找到

    任何关于我做错了什么的见解或对我的问题的反馈都是非常感谢的。我知道除了我尝试使用PuTTY(实际上不是工作中的选项)和ODBC驱动程序之外,还有其他选择(无法下载IBM iSeries fixpack来获取驱动程序或修复iSeries的安装,因为我没有Windows管理员权限)

    更新
    首先,我要感谢大家的评论和见解

    沃伦: 感谢您的见解。IBM DB2 PE 9.7 FP5 SRM R1实际上是DB2 LUW,或“COBRA”。这个特定的模拟器是IBM 3270模拟器的改编。这个仿冒品是由attachmate提供给您的(他们添加了一些提示,不再提供支持、ODBC驱动程序等)。在这个版本中,我可以选择使用IBM DB2 Query Manager for i5/OS。我同意服务器是分区的(我想是吧?),因为我能够调用不同的提示,比如DB2/SQLJ/JAVA,只是使用它们还不太成功。lol。也许我下面的尝试将揭示更多信息

    詹姆斯:
    感谢您的输入,我从来没有想过直接从powershell执行此操作。至于红皮书,请拥有它!我仍在阅读它。这可能比我目前使用powershell和ADO.NET时所处的位置要高级一些。我需要更深入地查看您的编码示例,以便更好地理解它

    巴克:
    我很感谢您的逐点反馈。我不确定您的设置是什么,但IBM I一般(特别是i5之后的任何内容)非常快。我工作的公司……或者至少是我的直接同事,礼貌地说,对I/vba/qsh/等知之甚少。所以,我学到的很多东西都是通过阅读和应用我学到的。实际上,这只是我的第二篇文章。在任何网站上,从来都是如此。我不喜欢仅仅发帖,因为我不能马上想办法。我很固执,如果必须让脚本工作的话,我会花上几个小时

    至于STRSQL,我使用的等价物是STRQRY
    db2 "select * from sysibm.sysdummy1"
    
    # Assembly name from \\HKCR\Installer\Assemblies\Global
    $an = 'IBM.Data.DB2.iSeries,Version="12.0.0.0",PublicKeyToken="9CDB2EBFB1F93A26",Culture="neutral"'
    # Connection string
    $cs = 'Data-Source=10.0.0.50;UserID=QPGMR;Password=****'
    
    Add-Type -AssemblyName $an
    $cn = New-Object IBM.Data.DB2.iSeries.iDB2Connection($cs)
    $cn.Open()
    $cmd = $cn.CreateCommand()
    $cmd.CommandText = "SELECT * FROM SYSIBM.SYSDUMMY1"
    $da = New-Object IBM.Data.DB2.iSeries.iDB2DataAdapter($cmd)
    $ds = New-Object System.Data.DataSet
    $cnt = $da.Fill($ds)
    Write-Host "$cnt records selected."
    $cmd.Dispose()
    $cn.Close()
    foreach ($dt in $ds.Tables) {
        $dv = New-Object System.Data.DataView($dt)
        $dv | Format-Table -AutoSize
        $dv.Dispose()
    }
    $ds.Dispose()