如何使用 PowerShell Core 从 Oracle SQL 数据库读取/获取数据?

如何使用 PowerShell Core 从 Oracle SQL 数据库读取/获取数据?

我已经研究这个问题好几天了,但一直陷入困境。

我需要编写一个脚本,从 Oracle db 获取数据并对数据进行处理。在我的脚本中,我必须多次获取数据。我的机器有SQLDeveloper-21.4.3我从安装中获得的InstantClient-Basic-Windows-21.3.0。我使用 SQL Developer 连接到另一台机器上的数据库;这就是我可以查看数据库的表、视图等的方式。

其次,此脚本将托管在另一台运行 Windows-Server-2012-R2 的服务器上。我只是使用我的机器来编写脚本,因为我无法使用服务器来执行此操作。因此,我正在寻找一种需要最少安装的解决方案。

第三,我们没有 Oracle 商业许可证。我尝试访问的这个 Oracle 数据库位于第三方安装的机器上,该机器上安装了一些仪器。该公司使用 Oracle 来收集所安装仪器上的数据。

我希望解决方案类似于调用 MS SQL 的连接,我下载了提供 cmdlet 来连接到 MS SQL 的模块。

Oracle 确实有Oracle Modules for PowerShell,但我既没有找到如何使用它们的信息,也没有理解 Oracle 提供的关于此的少量信息。要使其工作,要求之一是:

用于签署 API 请求的配置文件和密钥对,其中公钥使用 Oracle Cloud Infrastructure Console 上传到 Oracle Cloud。只有调用 API 的用户才应该拥有私钥。

我不知道 Oracle 到底在说什么。例如,这个配置文件是什么,它在哪里?我从哪里获取用于签署 API 请求的密钥对。什么是 Oracle Infrastructure Console,我从哪里获取它?你明白了。链接:https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/powershell.htm

因此,我选择了.DLL 路线。

这是我目前所做的:

我是Oracle.ManagedDataAccess.Core -Version 3.21.61从 NuGet 安装的。解压包并将它移动Oracle.ManagedDataAccess.dll到我的脚本的位置。代码是:

$OracleDLLPath = "C:\Users\Desktop\CNC_File_Transfer_VSCode\Fastems_NicNet\Oracle.ManagedDataAccess.dll"
    $datasource = " (DESCRIPTION = 
                    (ADDRESS = 
                    (PROTOCOL = TCP)
                    (HOST  = 10.50.61.9)(PORT = 1521))
                    (CONNECT_DATA = (SERVER =  DEDICATED)
                    (SERVICE_NAME = Fa1)
                    (FAILOVER_MODE = (TYPE = SELECT)
                    (METHOD =  BASIC)
                    (RETRIES = 180)
                    (DELAY = 5))))"
    $username = "username"
    $password = "password"
    $queryStatment = "SELECT [PROG_TYPE] FROM NC_PROGRAMS FETCH FIRST 10 ROWS ONLY" 
    #Load Required Types and modules
    Add-Type -Path $OracleDLLPath 
    Import-Module SqlServer
    Write-Host $queryStatment
    #Create the connection string
    $connectionstring = 'User Id=' + $username + ';Password=' + $password + ';Data Source=' + $datasource 
    #Creates a data adapter for the command
    $da = New-Object Oracle.ManagedDataAccess.Client.OracleDataAdapter($cmd);
    #The Data adapter will fill this DataTable
    $resultSet = New-Object System.Data.DataTable
    #Only here the query is sent and executed in Oracle 
    [void]$da.fill($resultSet)
    #Close the connection
    $con.Close()
    WRITE-HOST $resultSet

但这会出现错误:

Add-Type : Unable to load one or more of the requested types. Retrieve 
the LoaderExceptions property for more information.

我对编程还很陌生。如果有人能提供解决此问题的详细步骤,我将不胜感激。提前致谢。

相关内容