【问题标题】:Perl script to connect oracle database连接oracle数据库的perl脚本
【发布时间】:2015-11-27 22:15:00
【问题描述】:

我是 Perl 编程和数据库连接的新手。谁能告诉我为 Oracle 数据库连接编写 Perl 脚本的分步过程。

我的 Perl 版本是:

这是为 MSWin32-x64-multi-thread 构建的 perl 5,版本 22,subversion 0 (v5.22.0)
版权所有 1987-2015,拉里·沃尔
Perl 只能根据艺术许可或 GNU 通用公共许可证,可在 Perl 5 源工具包中找到。

我已经尝试过以下方法:

my $db = DBI->connect("dbi:Oracle:Local","SYSTEM","SYSTEM") or die print ("could not connect! $DBI::errstr \n");

由于我不知道这个“dbi:Oracle:Local”是什么,我无法连接到数据库。

请告诉我什么是 dbi、Oracle、local。如果是 Hostname 和 oracle 数据库名称,如何在我的计算机中找到相同的名称。

我需要在 Perl 中设置任何 ENV 变量吗?如果是这样,我需要在哪里设置?

【问题讨论】:

  • 抱歉,这个问题实在是太宽泛了,无法有意义地回答。您是否考虑过雇用不熟悉 perl 和数据库编程的人?
  • print 在使用die 时不是必需的。 die 自己显示消息。

标签: perl oracle11g dbi dbd


【解决方案1】:

dbi:OracleDBI 知道要使用哪个驱动程序。如果您连接到 Oracle 数据库,则永远不会更改这些。

Local 是本地系统上的实际数据库名称,或者是TNSNAMES.ORA 中列出的名称。替换您要连接的本地数据库的名称。

接下来的两个参数是用户名和密码。

如果您正在远程连接,或者需要做一些更详细的操作,请咨询the docs,或众多可用的guides 之一。

【讨论】:

  • 非常感谢您的评论。在这里我将分享我的 TNSNAMES.ORA 文件。你能告诉我数据库名称,SID,主机名,XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO)))
【解决方案2】:
my $db = DBI->connect("dbi:Oracle:Local","SYSTEM","SYSTEM");

“dbi”是一个字符串,
“Oracle”是驱动程序类型,
“local”是数据库名称,
第一个“SYSTEM”是用户名,第二个是密码。

use DBI;
my $dbh = DBI->connect( "dbi:Oracle:databaseName", 'username', 'passwd' ) or die($DBI::errstr, "\n");

首先阅读Simple Database access using Perl DBI and SQL的基本概念。

【讨论】:

  • 非常感谢您的评论。但是你能告诉我如何找到我的驱动程序名称和数据库名称。
猜你喜欢
  • 2015-09-07
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多