标题: AIX下关于DB2的问题
jcnll
LU新生
Rank: 1



UID 26253
精华 1
积分 9
帖子 13
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-8
 
发表于 2004-9-8 17:44  资料  个人空间  短消息  加为好友 
执行DB2 -TVF XX.SQL在AIX下不成功。
执行DB2 -F XX.SQL在AIX下成功。

如果只有一行命令,执行DB2 -TVF XX.SQL在AIX下成功。
如:CREATE TABLE DB2ADMIN.A ("A" VARCHAR (20) , "B" VARCHAR (20) ) DATA CAPTURE NONE ;

如果有两行命令,执行DB2 -TVF XX.SQL在AIX下不成功。
如:CREATE TABLE DB2ADMIN.A ("A" VARCHAR (20) , "B" VARCHAR (20) ) DATA CAPTURE NONE ;
CREATE TABLE DB2ADMIN.B ("C" VARCHAR (20) , "D" VARCHAR (20) ) DATA CAPTURE NONE ;

请教一下这是为什么? cry_smile.gif

顶部
jcnll
LU新生
Rank: 1



UID 26253
精华 1
积分 9
帖子 13
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-8
 
发表于 2004-9-8 17:47  资料  个人空间  短消息  加为好友 
在XX.SQL文件里没有命令分割符号就可以执行成功
有2个以上命令分割符号就失败

顶部
燕狂徒
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15


LU爱心使者  
UID 59
精华 14
积分 1708
帖子 3209
活跃指数 155
LU金币 4925 个
LU金条 616 个
阅读权限 210
注册 2003-9-19
 
发表于 2004-9-8 22:47  资料  个人空间  主页 短消息  加为好友 
db2的sql文件是有格式的
具体的我现在手头没有db2,你可以使用命令中心试试





http://www.100c.com.cn/oblog/user1/1/index.html
顶部
jcnll
LU新生
Rank: 1



UID 26253
精华 1
积分 9
帖子 13
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-8
 
发表于 2004-9-9 09:45  资料  个人空间  短消息  加为好友 
在命令中心和CLP下执行命令是不一样的。因为这两个工具和DB2的接口不一样。
被要求必须是在AIX系统下用DB2 -TVF XX.SQL 命令执行。能试过的办法都试过了,就卡在命令结束符上了。老大帮忙啊 sad.gif

顶部
larryh
超级版主
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17



LU爱心使者  
UID 133
精华 29
积分 3999
帖子 7385
活跃指数 261
LU金币 4065 个
LU金条 5409 个
阅读权限 251
注册 2003-9-26
 
发表于 2004-9-9 13:36  资料  个人空间  短消息  加为好友 
你的XX.SQL文件是怎样生成的?

顶部
seven
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15



UID 25386
精华 7
积分 254
帖子 440
活跃指数 28
LU金币 5736 个
LU金条 0 个
阅读权限 210
注册 2004-7-29
 
发表于 2004-9-9 15:56  资料  个人空间  短消息  加为好友 
QUOTE(jcnll @ 2004-09-08 17:44:45)
执行DB2 -TVF XX.SQL在AIX下不成功。
执行DB2 -F XX.SQL在AIX下成功。

如果只有一行命令,执行DB2 -TVF XX.SQL在AIX下成功。
如:CREATE TABLE DB2ADMIN.A ("A" VARCHAR (20) , "B" VARCHAR (20) )  DATA CAPTURE NONE  ;

如果有两行命令,执行DB2 -TVF XX.SQL在AIX下不成功。
如:CREATE TABLE DB2ADMIN.A ("A" VARCHAR (20) , "B" VARCHAR (20) )  DATA CAPTURE NONE  ;
CREATE TABLE DB2ADMIN.B ("C" VARCHAR (20) , "D" VARCHAR (20) )  DATA CAPTURE NONE  ;

请教一下这是为什么? cry_smile.gif
[right][snapback]386478[/snapback][/right]


1. 注意你的;是不是中文的字符,有次我同事就犯了这个笔误,害我也瞎摸了半天
2. 可以不用;来做结束符号,我们可以用别的啊,比如象写sp一样的用@

我给你个例子:
CODE

脚本内容:test.db2
insert into test(col1) values(1)@
insert into test(col1) values(2)@

执行脚本(clp):
db2 -td@ -svf test.db2
这里用d@来指定我们自己的结束符!

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
jcnll
LU新生
Rank: 1



UID 26253
精华 1
积分 9
帖子 13
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-8
 
发表于 2004-9-9 16:11  资料  个人空间  短消息  加为好友 
XX.SQL是用UltraEdit写的。
我的";"不是中文的符号,是在英文下的分号。
别的命令结束符号也都试过了啊,都不能执行成功。

实验记录如下:
1.用db2 -tf filename.sql执行sql类型文件失败(在有命令结束符号的情况下,默认的命令结束符号为";")。
2.用db2 -td@ -f filename.sql执行sql类型文件失败(在有命令结束符号的情况下,使用命令结束符号为"@")。

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
larryh
超级版主
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17



LU爱心使者  
UID 133
精华 29
积分 3999
帖子 7385
活跃指数 261
LU金币 4065 个
LU金条 5409 个
阅读权限 251
注册 2003-9-26
 
发表于 2004-9-9 16:22  资料  个人空间  短消息  加为好友 
错误信息是什么?

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
jcnll
LU新生
Rank: 1



UID 26253
精华 1
积分 9
帖子 13
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-8
 
发表于 2004-9-9 16:27  资料  个人空间  短消息  加为好友 
$ db2 -tvf a.sql
CREATE TABLE DB2ADMIN.b ("b" VARCHAR (20)) DATA CAPTURE NONE
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "CREATE TABLE DB2ADMIN.A ("a" VARCHAR (20)) "
was found following "BEGIN-OF-STATEMENT". Expected tokens may include:
"<space>". SQLSTATE=42601


a.sql内容为:
CREATE TABLE DB2ADMIN.a ("a" VARCHAR (20)) DATA CAPTURE NONE;
CREATE TABLE DB2ADMIN.b ("b" VARCHAR (20)) DATA CAPTURE NONE;


以上只是一个实验

顶部
[广告] 记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
jcnll
LU新生
Rank: 1



UID 26253
精华 1
积分 9
帖子 13
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-8
 
发表于 2004-9-9 16:47  资料  个人空间  短消息  加为好友 
看报告的错误基本上没有什么用的。
如果把sql 文件里的内容改成:
connect to db user db2inst1 using ibmdb2;
disconnect all;

得到以下错误:
$ db2 -tvf b.sql
connect to db user db2inst1 using all
SQL0104N An unexpected token "all" was found following "<identifier>".
Expected tokens may include: "NEW". SQLSTATE=42601

顶部
seven
版主
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15



UID 25386
精华 7
积分 254
帖子 440
活跃指数 28
LU金币 5736 个
LU金条 0 个
阅读权限 210
注册 2004-7-29
 
发表于 2004-9-9 17:07  资料  个人空间  短消息  加为好友 
天,终于模拟出你的错误来了
CODE

C:\>db2 -svtf test.txt
create table a("a" char(10));create table b("b" char(10))
DB21034E  该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0104N  在 "BEGIN-OF-STATEMENT" 之后发现意外的标记 "create table A("a"
char(10));"。期望的标记可能包括:"<space>"。  SQLSTATE=42601



猜想的错误(也是我再次看你的回复是用ultraedit写的脚本):

你的脚本是在win上写好ftp到aix上的吧?
在win上回车,换行是\n\r
在unix上回车,换行是\n
所以我把脚本里的建表语句写到一行上来,虽然我也用了;分隔符!错误就模拟出来了


你在参照一下,看看是不是这个错误!
弄好的,说一声啊!把我的好奇心全引起来smile.gif

顶部
jcnll
LU新生
Rank: 1



UID 26253
精华 1
积分 9
帖子 13
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2004-9-8
 
发表于 2004-9-9 17:17  资料  个人空间  短消息  加为好友 
cry_smile.gif 无用啊!!
我把sql文件里的内容弄成一行也不行,如下:
CREATE TABLE DB2ADMIN.a ("a" VARCHAR (20)) DATA CAPTURE NONE;CREATE TABLE DB2ADMIN.b ("b" VARCHAR (20)) DATA CAPTURE NONE;

错误报告为:

$ db2 -tvf a.sql
CREATE TABLE DB2ADMIN.a ("a" VARCHAR (20)) DATA CAPTURE NONE;CREATE TABLE DB2ADM
IN.b ("b" VARCHAR (20)) DATA CAPTURE NONE
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "CREATE TABLE DB2ADMIN.A ("a" VARCHAR (20)) "
was found following "BEGIN-OF-STATEMENT". Expected tokens may include:
"<space>". SQLSTATE=42601

顶部
 



当前时区 GMT+8, 现在时间是 2008-10-12 22:59
乐悠LoveUnix论坛-京ICP备05005823号

Thanks to Discuz!  © 2001-2007    Power by LoveUnix.net
Processed in 0.057982 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 乐悠LoveUnix - Archiver