如何在DB2命令窗口执行sql脚本

如何在DB2命令窗口执行sql脚本,第1张

DB2 命令行中执行sql脚本如下:

db2 => connect to dbName user xxx using password

db2 => sql语句

如果要执行一个sql脚本文件:

db2 => quit

c:\> db2 -tvf sql文件名

db2 -td@ -f filename

@是语句结束符。

E:\>db2 options

db2 [option ] [db2-command | sql-statement |

[ [phrase | message | sqlstate | class-code]]]

option:-a、-c、-e{c|s}、-finfile、-lhistfile、-n、-o、-p、-rreport、-s、-t、

-td;、-v、-w、-x 和 -zoutputfile。

选项 描述 缺省设置

------ ---------------------------------------- ---------------

-a 显示 SQLCA OFF

-c 自动落实 ON

-e 显示 SQLCODE/SQLSTATE OFF

-f 读取输入文件 OFF

-l 将命令记录到历史文件中 OFF

-n 除去换行字符 OFF

-o 显示输出 ON

-p 显示 db2 交互式提示符 ON

-r 将输出报告保存到文件 OFF

-s 在命令出错时停止执行 OFF

-t 设置语句终止字符 OFF

-v 回送当前命令 OFF

-w 显示 FETCH/SELECT 警告消息 ON

-x 不打印列标题 OFF

-z 将所有输出保存到输出文件 OFF

注意:

使用 DB2OPTIONS 环境变量定制选项缺省值。

紧跟选项字母后的减号(-)使该选项关闭。

使用 UPDATE COMMAND OPTIONS 更改选项设置(以交互式或

文件输入方式)。

只能提供nt环境下编写脚本的例子给你以供参考:

脚本样例:

db2 connect to yourdb user yourname using yourpassword

db2 insert into newuser(username,password,email) values('Amy','1234','Amy@sscom')

db2 insert into newuser(username,password,email) values('Judy','1234','Judy@sscom')

db2 commit

db2 disconnect yourdb

运行脚本: 运行db2cmd X:\XXXbat

以下摘自本论坛的FAQ可参考:

"

在命令窗口中运行DB2脚本,可用 db2 -svtf 脚本文件名 来实现。

例如,脚本文件名为samplesql,运行:db2 -svtf samplesql

参数中:

s 代表遇到错误时中止运行脚本

v 代表输出结果到屏幕

t 指以;号作为每行的分隔符

f 指后面需跟脚本文件名 "---此摘录版权归斑竹非本人所有

具体在AS400如何编写脚本非常遗憾

db2 -x select SERIALNO from tabname where clause

C:>db2 attach to db2164 user ccp

输入 ccp 的当前密码:

实例连接信息

实例服务器 = DB2/NT 820

授权标识 = CCP

本地实例别名 = DB2164

C:>db2 connect to dw164 user ccp

输入 ccp 的当前密码:

数据库连接信息

数据库服务器 = DB2/NT 820

SQL 授权标识 = CCP

本地数据库别名 = DW164

C:>db2 select from CCP_STS1 fetch first 2 rows only with ur

CUST_ID NOW_PRED_S LOAD_TIME

-------------------- -------------------- --------------------------

3094736 ZFS 2008-05-07-100200453000

3145886 ZFS 2008-05-07-100200453000

2 条记录已选择。

C:>db2 list command options

命令行处理器选项设置

后端进程等待时间(秒) (DB2BQTIME) = 1

连接至后端的重试次数 (DB2BQTRY) = 60

请求队列等待时间(秒) (DB2RQTIME) = 5

输入队列等待时间(秒) (DB2IQTIME) = 5

命令选项 (DB2OPTIONS) = +m

选项 描述 当前设置

------ ---------------------------------------- ---------------

-a 显示 SQLCA OFF

-c 自动落实 ON

-d 检索并显示 XML 声明 OFF

-e 显示 SQLCODE/SQLSTATE OFF

-f 读取输入文件 OFF

-i 显示 XML 数据并带有缩进 OFF

-l 将命令记录到历史记录文件中 OFF

-m 显示受影响的行数 OFF

-n 除去换行字符 OFF

-o 显示输出 ON

-p 显示交互式输入提示符 ON

-q 保留空格和换行符 OFF

-r 将输出保存到报告文件 OFF

-s 在命令出错时停止执行 OFF

-t 设置语句终止字符 OFF

-v 回传当前命令 OFF

-w 显示 FETCH/SELECT 警告消息 ON

-x 不打印列标题 OFF

-z 将所有输出保存到输出文件 OFF

C:>db2set DB2OPTIONS=-x

C:>db2 select from CCP_STS1 fetch first 2 rows only with ur

4654908 ZFS 2008-05-07-100200453000

3716687 ZFS 2008-05-07-100200453000

里面若是sql语句的话,直接

db2 CREATE SERVER TESTDB TYPE DB2/UDB VERSION '1050' WRAPPER "DRDA" AUTHID "db2inst2" PASSWORD "db2inst2" OPTIONS(ADD NODE 'TESTDB', PASSWORD 'Y')

不要带双引号,以及最后的分号。

PLSQL Developer无法连接DB2数据库,只能连接Oracle。

PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据 *** 作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等 *** 作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。DB2目前不支持 PL/SQL 的。

db2look 

语法: db2look -d DBname [-e] [-u Creator] [-z Schema] [-t Tname1 Tname2TnameN] [-h] [-o Fname] [-a]

                          [-m] [-c] [-r] [-l] [-x] [-xd] [-f] [-fd] [-td x] [-noview] [-i userID] [-w password]

                          [-wrapper WrapperName] [-server ServerName] [-nofed]

        db2look -d DBname [-u Creator] [-s] [-g] [-a] [-t Tname1 Tname2TnameN]

                          [-p] [-o Fname] [-i userID] [-w password]

        db2look [-h]

        -d: 数据库名:这必须指定

        -e: 抽取复制数据库所需要的 DDL 文件

        -u: 创建程序标识:若 -u 和 -a 都未指定,则将使用 $USER

        -z: 模式名:如果同时指定了 -z 和 -a,则将忽略 -z

        -t: 生成指定表的统计信息

        -h: 更详细的帮助消息

        -o: 将输出重定向到给定的文件名

        -a: 为所有创建程序生成统计信息

        -m: 在模拟方式下运行 db2look 实用程序

            -c: 不要生成模拟的 COMMIT 语句

            -r: 不要生成模拟的 RUNSTATS 语句

        -l: 生成数据库布局:数据库分区组、缓冲池和表空间。

        -x: 生成排除对象的原始定义器的“授权”语句 DDL

        -xd: 生成包括对象的原始定义器的“授权”语句 DDL

        -f: 抽取配置参数和环境变量

        -td: 将 x 指定为语句定界符(缺省定界符为分号(;))

        -p: 使用简单文本格式

        -s: 生成 postscript 文件

        -g: 使用图形来显示索引的页取装对

        -i: 登录到数据库驻留的服务器时所使用的用户标识

        -w: 登录到数据库驻留的服务器时所使用的密码

   -noview: 不要生成 CREATE VIEW ddl 语句

   -wrapper: 为适用于此包装器的联合对象生成 DDL

   -server: 为适用于此服务器的联合对象生成 DDL

   -nofed: 不要生成 Federated DDL

   -fd: 为 opt_buffpage 和 opt_sortheap 以及其它配置和环境参数生成 db2fopt语句。

在命令行处理器中只能执行数据库命令,在命令窗口中可以执行 *** 作系统命令。在命令行处理器中执行quit命令,就会返回命令窗口。在命令窗口执行db2 ,就可进行命令行处理器。在命令窗口执行db2命令时,在前面加db2并用""把sql语句包起来。创建数据库可以查询一下帮助 在命令行处理器中执行 create db 回车。或在命令窗口执行db2 create db

查询错误 db2 sql1024N

DB2错误分为sqlcode 和sqlstate 1024N或1052N为sqlcode

C:\Program Files\IBM\SQLLIB\BIN>db2 sql1024n

SQL1024N 不存在数据库连接。

说明:

没有与数据库连接。除非先前执行了 SQL CONNECT,否则不能处理其他 SQL 语句

无法处理该命令。

用户响应:

如果与数据库断开连接时发生错误,那么继续处理。如果在另一条 SQL 语句中发

生错误,那么发出 SQL CONNECT 语句,并重新提交该命令或语句。

sqlcode:-1024

sqlstate:08003

USERS表是建立在那个Schema上的,把Schema的名字也加到SQL语句上,“select from SchemaUSERS”

下面是SQLSTATE=42704的解释。

SQL0204N "<名称>" 是一个未定义的名称。

解释:

此错误由以下之一引起:

o 未在数据库中定义由 "<名称>" 标识的对象。

o 在表上未定义由 "<名称>" 标识的数据分区。

o 正在使用某个数据类型。此错误可能是由于下

列原因而发生的:

- 如果 "<名称>"

是限定名称,则具有此名称的数据类型在数据

库中不存 在。

- 如果 "<名称>"

是非限定名称,则用户的函数路径不包含期望

的数据类 型所属于的模式。

- 该数据类型在创建时间戳记早于程序包绑定时

间的数据库中不存在(适用于静态语句)。

- 如果数据类型在 CREATE TYPE 语句的 UNDER

子句中,则该类型名可能与正定义的类型相同

,这 是无效的。

o 下列其中一项中正在引用某个函数:

- DROP FUNCTION 语句

- COMMENT ON FUNCTION 语句

- CREATE FUNCTION 语句的 SOURCE 子句

如果 "<名称>"

是限定名称,则函数不存在。如果

"<名称>"

是非限定名称,则当前函数路径的任何模式中

都不存 在

此名称的函数。注意,函数不能以

COALESCE、 NULLIF 或 VALUE

内置函数作为源函数。

o 在 CREATE SECURITY LABEL COMPONENT 语句中 UNDER

子句右边使用了名为“名称”的元素,但尚未

将该 元素定义为 ROOT

或者在其他某个元素下方(UNDER)。

o 下列其中一个标量函数指定了“名称”标识的

安全策略,但在数据库中未定义该安全策略。

- SECLABEL

- SECLABEL_TO_CHAR

- SECLABEL_BY_NAME

可为任何类型的数据库对象生成此返回码。

联合系统用户:在数据库中未定义由 "<名称>"

标识的对象,或者 "<名称>" 不是 DROP NICKNAME

语句中的昵称。

某些数据源不向 "<名称>"

提供适当的值。在这些情况下,消息标记将具有以下格

式: "OBJECT:<数据源>

TABLE/VIEW",指示指定数据源的实际值未知。

不能处理该语句。

用户响应:

确保在 SQL 语句中正确指定了对象名(包括任何必需

的限定符),并且它存在。

如果该名称表示一个数据分区,则查询目录表

SYSCATDATAPARTITIONS

以找到一个表的所有数据分区。对于 SOURCE

子句中缺少的数据类型或函数,可能是该对象不存

在,或该对象处于某模式中,

JAVA连接DB2

/了解基础情况/ 对于Java程序员而言,DB2 提供了两种应用程序编程接口(API):JDBC 和 SQLJ。

JDBC:

JDBC 驱动程序分为旧的/CLI 驱动程序<db2javazip>和新的通用 JDBC 驱动程序(Universal JDBC Driver)<db2jccjar>。

JDBC 是一个与供应商无关的动态 SQL 接口,该接口通过标准化的 Java 方法向您的应用程序提供数据访问。

JDBC 类似于 DB2 CLI,因为您无须预编译应用程序代码,也无须将软件包绑定到 DB2 数据库。

作为一个与供应商无关的标准,JDBC 应用程序提供了更多的可移植性—这是当今异构业务基础设施所必需的优点。

在执行 JDBC 应用程序期间,驱动程序将针对当前连接的 DB2 数据库服务器验证 SQL 语句。

访问期间的任何问题都会作为 Java 异常与相应的 SQLSTATE 和 SQLCODE 一起报告给应用程序。

SQLJ:

SQLJ 是一个用于从 Java 应用程序进行数据访问的标准开发模型。

SQLJ API 是在 SQL 1999 规范中定义的。

新的通用 JDBC 驱动程序在一个实现中同时为 JDBC 和 SQLJ API 提供了支持。

JDBC 和 SQLJ 可以在同一个应用程序中互 *** 作。

SQLJ 提供了独特的使用静态 SQL 语句进行开发以及在 DB2 包级别控制访问的能力。

/JDBC连接方式分析/

JDBC 驱动程序体系结构分为四种类型:Type1,Type2,Type3,Type4。

Type1:

驱动程序基于 JDBC-ODBC 桥。

因此 ODBC 驱动程序可以与此类 JDBC 驱动程序(由 Sun 提供)结合起来使用。

IBM 不支持 Type 1 驱动程序,因此它不是推荐的环境。

Type2:

驱动程序依靠特定于 *** 作系统的库(共享库)来与 RDBMS 通信。

应用程序将装入这种 JDBC 驱动程序,而驱动程序将使用共享库来与 DB2 服务器通信。

DB2 UDB for Linux, UNIX和 WindowsV81 提供了两种不同的 Type 2 驱动程序:

<1> 旧的/CLI JDBC 驱动程序在文件db2javazip中提供。

其实现包名称为COMibmdb2jdbcappDB2Driver。

该驱动程序目前已被用于进行 J2EE 认证。

其别名“app 驱动程序”源自于一种观念及其包名称,

这种观念就是:此驱动程序将通过远程数据库的本地 DB2 UDB 客户机执行本地连接。

<2> 通用 JDBC 驱动程序在文件db2jccjar中提供。

其实现包名称为comibmdb2jccDB2Driver。

此驱动程序是 DB2 UDB for Linux, UNIX 和 Windows V81 中的新功能。

在最初的实现(V81)中,此驱动程序用于使用 Type 4 驱动程序体系结构与 DB2 服务器进行直接的 Java 连接。

在 DB2 V812 中,您可以在 Type 2 体系结构中使用此驱动程序。

在 Type 2 体系结构中使用此驱动程序的一个主要原因是为了本地应用程序性能和分布式事务支持。

通用 JDBC Type 2 驱动程序分别使用comibmdb2jccDB2XADataSource和comibmdb2jccDB2ConnectionPoolDataSource来支持分布式事务和连接池。 注:在将来的版本中不会对旧的/CLI Type 2 驱动程序进行增强。

Type3:

驱动程序是一种纯 Java 实现,它必须与 DB2 JDBC Applet 服务器(DB2 JDBC Applet Server)通信才能访问 DB2 数据。

此类驱动程序旨在使 Java applet 能访问 DB2 数据源。

常被称作“网络(net)驱动程序”,它是根据其包名COMibmdb2jdbcnet命名的。DB2 V81 支持网络驱动程序,可以将其用于 JDBC 应用程序。

要求db2javazip驱动程序总是处于与 DB2 Applet 服务器相同的维护级别。

如果驱动程序在 applet 内使用,这就不是一个问题,因为浏览器会在应用程序执行期间下载相应的db2javazip文件。

许多客户使用 Type3 驱动程序而不是 Type2 驱动程序,以避免必需的 DB2 客户机安装和必需的DB2 CATALOG DATABASE命令,后者用于创建使用旧的/CLI 驱动程序进行 Type 2 连接所必需的数据库目录信息。

目前,WebSphere Application Server 和其它 J2EE 服务器不支持 IBM Type 3 驱动程序,因为该驱动程序不支持分布式事务(JTA)。

将来的版本不会对 Type 3 驱动程序进行增强。

鼓励使用通用 JDBC Type 4 驱动程序来替代 Type 3 驱动程序。

Type4:

驱动程序是仅用于 Java 的 JDBC 驱动程序,它直接连接到数据库服务器。

DB2 UDB for Linux, UNIX 和 Windows V81 引入了称为“通用 JDBC 驱动程序(Universal JDBC driver)”的 Type 4 驱动程序。

通用 JDBC 驱动程序在文件db2jccjar中提供。

其实现包名为comibmdb2jccDB2Driver。

请注意,通用 Type 2 和通用 Type 4 驱动程序具有相同的实现类名称。

有两种方法可以区别 DB2 在内部将实例化哪个驱动程序:

使用连接特性来确定连接是否使用共享库(Type2),或者驱动程序是否会启动来自 Java 应用程序的直接连接(Type4)。

重要:就 DB2 UDB V812 而言,通用 JDBC 驱动程序要求 CLASSPATH 中有许可证 JAR 文件和db2jccjar文件。

以下是所需的许可证 JAR 文件:

Cloudscape Network Server V51:db2jcc_license_cjar

DB2 UDB V8 for Linux, UNIX 和 Windows 服务器:db2jcc_license_sujar

DB2 UDB for iSeries and z/OS 服务器(与 DB2 Connect 和 DB2 Enterprise Server Edition 一起提供):db2jcc_license_cisuzjar 驱动程序类型:db2javazip, db2jccjar

注意:假如你使用db2javazip,且web服务器使用Tomcat的话,请将db2javazip改名为db2javajar,最好将zip解压再用jar命令打包,直接改文件类型也行(呵呵,按照jar文件严格意义上来讲这是不符合文法的<少了描述性文件:MANIFESTMF>,能用就行)

还有一般情况下:就是使用 db2javazip的话需要安装db2客户端, 使用db2jccjar是通过网络直接来连接的无需安装db2客户端(假如用在type2上还是要装客户端的)type2:

使用<db2javazip>:

jdbcdriverClassName=COMibmdb2jdbcappDB2Driver

jdbcurl=jdbc:db2:dataBaseName

假如你的工具使用的是myeclipse且使用的是tomcat plugin的话,请将db2jdbcdll 拷贝到 %JAVA_HOME%/bin下,否则不行地啦

<是不是其他类型的使用db2javazip驱动也有这个问题呢,不知道,没试过,有空试一下>

使用<db2jccjar>:

jdbcdriverClassName=comibmdb2jccDB2Driver

jdbcurl=jdbc:db2:dataBaseName

type3:

驱动:db2javazip

jdbcdriverClassName=COMibmdb2jdbcnetDB2Driver

jdbcurl=jdbc:db2://ip:6789/DBNAME

注意:要在数据库上执行 db2jstrt 6789 (这句启动了db2jd进程,6789是默认的服务器侦听jdbc2连接的端口,也可以设置成另外的任意不冲突的端口。)

type4:

驱动:db2jccjar

数据库字符集必须设置为utf-8

jdbcdriverClassName=comibmdb2jccDB2Driver

jdbcurl=jdbc:db2://ip:port/DBNAME

以上就是关于如何在DB2命令窗口执行sql脚本全部的内容,包括:如何在DB2命令窗口执行sql脚本、DB2 联邦数据库功能、如何用PLSQL Developer连接DB2数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9518616.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存