LoveUnix » DB2 & Informix » AIX下关于DB2的问题
让LU留住您的每

一天 让LU博客留住您的每一天
2004-9-8 17:44 jcnll
执行DB2 -TVF XX.SQL在AIX下不成功。<br />执行DB2 -F XX.SQL在AIX下成功。<br /><br />如果只有一行命令,执行DB2 -TVF XX.SQL在AIX下成功。<br />如:CREATE TABLE DB2ADMIN.A (&quot;A&quot; VARCHAR (20) , &quot;B&quot; VARCHAR (20) )  DATA CAPTURE NONE  ;<br /><br />如果有两行命令,执行DB2 -TVF XX.SQL在AIX下不成功。<br />如:CREATE TABLE DB2ADMIN.A (&quot;A&quot; VARCHAR (20) , &quot;B&quot; VARCHAR (20) )  DATA CAPTURE NONE  ;<br />CREATE TABLE DB2ADMIN.B (&quot;C&quot; VARCHAR (20) , &quot;D&quot; VARCHAR (20) )  DATA CAPTURE NONE  ;<br /><br />请教一下这是为什么? <!--emo&:cry:--><img src='style_emoticons/default/cry_smile.gif' border='0' style='vertical-align:middle' alt='cry_smile.gif' /><!--endemo-->

2004-9-8 17:47 jcnll
在XX.SQL文件里没有命令分割符号就可以执行成功<br />有2个以上命令分割符号就失败

2004-9-8 22:47 燕狂徒
db2的sql文件是有格式的<br />具体的我现在手头没有db2,你可以使用命令中心试试

2004-9-9 09:45 jcnll
在命令中心和CLP下执行命令是不一样的。因为这两个工具和DB2的接口不一样。<br />被要求必须是在AIX系统下用DB2 -TVF XX.SQL 命令执行。能试过的办法都试过了,就卡在命令结束符上了。老大帮忙啊 <!--emo&:(--><img src='style_emoticons/default/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif' /><!--endemo-->

2004-9-9 13:36 larryh
你的XX.SQL文件是怎样生成的?

2004-9-9 15:56 seven
<!--QuoteBegin-jcnll+2004-09-08 17:44:45--><div class='quotetop'>QUOTE(jcnll @ 2004-09-08 17:44:45)</div><div class='quotemain'><!--QuoteEBegin-->执行DB2 -TVF XX.SQL在AIX下不成功。<br />执行DB2 -F XX.SQL在AIX下成功。<br /><br />如果只有一行命令,执行DB2 -TVF XX.SQL在AIX下成功。<br />如:CREATE TABLE DB2ADMIN.A (&quot;A&quot; VARCHAR (20) , &quot;B&quot; VARCHAR (20) )&nbsp; DATA CAPTURE NONE&nbsp; ;<br /><br />如果有两行命令,执行DB2 -TVF XX.SQL在AIX下不成功。<br />如:CREATE TABLE DB2ADMIN.A (&quot;A&quot; VARCHAR (20) , &quot;B&quot; VARCHAR (20) )&nbsp; DATA CAPTURE NONE&nbsp; ;<br />CREATE TABLE DB2ADMIN.B (&quot;C&quot; VARCHAR (20) , &quot;D&quot; VARCHAR (20) )&nbsp; DATA CAPTURE NONE&nbsp; ;<br /><br />请教一下这是为什么? <!--emo&:cry:--><img src='style_emoticons/default/cry_smile.gif' border='0' style='vertical-align:middle' alt='cry_smile.gif' /><!--endemo--><br />[right][snapback]386478[/snapback][/right]<br /><!--QuoteEnd--></div><!--QuoteEEnd--><br /><br />1. 注意你的;是不是中文的字符,有次我同事就犯了这个笔误,害我也瞎摸了半天<br />2. 可以不用;来做结束符号,我们可以用别的啊,比如象写sp一样的用@<br /><br />我给你个例子:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--><br />脚本内容&#58;test.db2<br />insert into test&#40;col1&#41; values&#40;1&#41;@<br />insert into test&#40;col1&#41; values&#40;2&#41;@<br /><br />执行脚本&#40;clp&#41;&#58;<br />db2 -td@ -svf test.db2<br />这里用d@来指定我们自己的结束符&#33;<br /><!--c2--></div><!--ec2-->

2004-9-9 16:11 jcnll
XX.SQL是用UltraEdit写的。<br />我的&quot;;&quot;不是中文的符号,是在英文下的分号。<br />别的命令结束符号也都试过了啊,都不能执行成功。<br /><br />实验记录如下:<br />1.用db2 -tf filename.sql执行sql类型文件失败(在有命令结束符号的情况下,默认的命令结束符号为&quot;;&quot;)。<br />2.用db2 -td@ -f filename.sql执行sql类型文件失败(在有命令结束符号的情况下,使用命令结束符号为&quot;@&quot;)。

2004-9-9 16:22 larryh
错误信息是什么?

2004-9-9 16:27 jcnll
$ db2 -tvf a.sql<br /> CREATE TABLE DB2ADMIN.b (&quot;b&quot; VARCHAR (20)) DATA CAPTURE NONE<br />DB21034E  The command was processed as an SQL statement because it was not a<br />valid Command Line Processor command.  During SQL processing it returned:<br />SQL0104N  An unexpected token &quot;CREATE TABLE DB2ADMIN.A (&quot;a&quot; VARCHAR (20)) &quot;<br />was found following &quot;BEGIN-OF-STATEMENT&quot;.  Expected tokens may include:<br />&quot;&lt;space&gt;&quot;.  SQLSTATE=42601<br /><br /><br />a.sql内容为:<br />CREATE TABLE DB2ADMIN.a (&quot;a&quot; VARCHAR (20)) DATA CAPTURE NONE;<br />CREATE TABLE DB2ADMIN.b (&quot;b&quot; VARCHAR (20)) DATA CAPTURE NONE;<br /><br /><br />以上只是一个实验

2004-9-9 16:47 jcnll
看报告的错误基本上没有什么用的。<br />如果把sql 文件里的内容改成:<br />connect to db user db2inst1 using ibmdb2;<br />disconnect all;<br /><br />得到以下错误:<br />$ db2 -tvf b.sql<br />connect to db user db2inst1 using                   all<br />SQL0104N  An unexpected token &quot;all&quot; was found following &quot;&lt;identifier&gt;&quot;.<br />Expected tokens may include:  &quot;NEW&quot;.  SQLSTATE=42601

2004-9-9 17:07 seven
天,终于模拟出你的错误来了<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--><br />C&#58;\&#62;db2 -svtf test.txt<br />create table a&#40;&#34;a&#34; char&#40;10&#41;&#41;;create table b&#40;&#34;b&#34; char&#40;10&#41;&#41;<br />DB21034E &nbsp;该命令被当作 SQL<br />语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:<br />SQL0104N &nbsp;在 &#34;BEGIN-OF-STATEMENT&#34; 之后发现意外的标记 &#34;create table A&#40;&#34;a&#34;<br />char&#40;10&#41;&#41;;&#34;。期望的标记可能包括:&#34;&#60;space&#62;&#34;。 &nbsp;SQLSTATE=42601<br /><br /><!--c2--></div><!--ec2--><br /><br />猜想的错误(也是我再次看你的回复是用ultraedit写的脚本):<br /><br />你的脚本是在win上写好ftp到aix上的吧?<br />在win上回车,换行是\n\r<br />在unix上回车,换行是\n<br />所以我把脚本里的建表语句写到一行上来,虽然我也用了;分隔符&#33;错误就模拟出来了<br /><br /><br />你在参照一下,看看是不是这个错误&#33;<br />弄好的,说一声啊&#33;把我的好奇心全引起来<!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->

2004-9-9 17:17 jcnll
<!--emo&:cry:--><img src='style_emoticons/default/cry_smile.gif' border='0' style='vertical-align:middle' alt='cry_smile.gif' /><!--endemo--> 无用啊!!<br />我把sql文件里的内容弄成一行也不行,如下:<br />CREATE TABLE DB2ADMIN.a (&quot;a&quot; VARCHAR (20)) DATA CAPTURE NONE;CREATE TABLE DB2ADMIN.b (&quot;b&quot; VARCHAR (20)) DATA CAPTURE NONE;<br /><br />错误报告为:<br /><br />$ db2 -tvf a.sql<br />CREATE TABLE DB2ADMIN.a (&quot;a&quot; VARCHAR (20)) DATA CAPTURE NONE;CREATE TABLE DB2ADM<br />IN.b (&quot;b&quot; VARCHAR (20)) DATA CAPTURE NONE<br />DB21034E  The command was processed as an SQL statement because it was not a<br />valid Command Line Processor command.  During SQL processing it returned:<br />SQL0104N  An unexpected token &quot;CREATE TABLE DB2ADMIN.A (&quot;a&quot; VARCHAR (20)) &quot;<br />was found following &quot;BEGIN-OF-STATEMENT&quot;.  Expected tokens may include:<br />&quot;&lt;space&gt;&quot;.  SQLSTATE=42601

2004-9-9 17:20 seven
哎呀,我弄成一行是为了模拟的你出错啊&#33;&#33;曲解了你&#33;<br /><br /><br />你在unix下用vi把你的脚本重新敲一边,在试试看是不是文本在win和unix下回车,换行的问题

2004-9-9 17:24 jcnll
<!--emo&:cry:--><img src='style_emoticons/default/cry_smile.gif' border='0' style='vertical-align:middle' alt='cry_smile.gif' /><!--endemo--> <br /><br />我把那个好象是/r在UE去掉了,结果执行就成功了!<br />就象你说的那样只保留了/n<br />但是我是用db2move命令在Windows下导出一个完整的数据库,需要在AIX下用db2 -tvf xx.sql建立起来。<br />这下怎么办啊,一个一个的删除/r ????<br /><br /> <!--emo&:(--><img src='style_emoticons/default/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif' /><!--endemo-->

2004-9-9 17:31 jcnll
(1).db2look -d mymovies -e -a -o db2look.sql<br />捕获数据定义语言。<br /><br />(2).db2move mymovies export导出数据库里的数据<br /><br />(3).把生成的文件从Windows下弄到AIX下<br /><br />(4).db2 -tvf db2look.sql创建 MYMOVIES 数据库及其对象<br /><br />(5).db2move mymovies load导入数据<br /><br />这就是整个数据库在异种平台下克隆的过程。<br />55555

2004-9-9 17:32 jcnll
但是在第4步中必须db2 -tvf db2look.sql<br /><br />而在Windows下生成的sql文件肯定是/n和/r都有的啊<br />5555555 <!--emo&:cry:--><img src='style_emoticons/default/cry_smile.gif' border='0' style='vertical-align:middle' alt='cry_smile.gif' /><!--endemo-->

2004-9-9 17:57 seven
早说吗&#33;&#33;&#33;<br /><br />看来还真的是字符编码格式的问题<!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->哈哈,不费我下午陪你折腾半天<!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->嘻嘻<br /><br /><br />你这个字符格式转换的问题这个好办(btw:下次描述问题的时候,最后把你出现问题的具体过程也描述一下,今天我完全就是看你回复说用ultraedit猜的<!--emo&:(--><img src='style_emoticons/default/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif' /><!--endemo-->,开始还以为是你们那那个人把默认的;结束符给改了呢,还建议你用@来结束)<br /><br />解决方法: 用editplus打开你出win下db2导出的脚本*.sql,用editplus自带的ftp功能把脚本ftp到aix上,一般editplus在上传的时候就自动把字符编码格式转换过来了&#33;(好像ultraedit也可以,但我没有试过,对这个编辑器使用也不熟悉)<br /><br />搞定说一声&#33;good luck:)

2004-9-10 09:59 jcnll
我用UltraEdit打开sql文件并切换到Hex模式,把所有的0D字符删除掉,保存后在AIX下执行就成功了。(0D代表回车,0A代表换行) <!--emo&:haha:--><img src='style_emoticons/default/haha.gif' border='0' style='vertical-align:middle' alt='haha.gif' /><!--endemo--> <br /><br />相当于把/r给删除掉了,使之在AIX下符合回车换行的定义,结果执行一路顺风。<br /><br />非常感谢seven,这个问题一直困扰了我很久,由于对AIX的不熟悉。<br />再次感谢各位关心我的问题的老大,以后还要多多帮忙哦!! <!--emo&:grin:--><img src='style_emoticons/default/grin.gif' border='0' style='vertical-align:middle' alt='grin.gif' /><!--endemo-->

2004-9-10 11:59 seven
嗨&#33;哥们客气了&#33;<br /><br />用db2的人应该还是挺多了,我下面发的一贴,都没有人响应<!--emo&:(--><img src='style_emoticons/default/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif' /><!--endemo-->&#33;

2004-9-10 17:43 燕狂徒
我记得我是写过这个的,你看看<br /><a href='http://loveunix.3322.org/bbs/index.php?showtopic=11917&hl=' target='_blank'>http://loveunix.3322.org/bbs/index.php?showtopic=11917&hl=</a>

2004-9-10 23:50 无双
在vi中使用<br />:%s/\r//g<br /><br />也可以清掉的

2004-9-11 12:49 seven
我觉得这贴给我的经验是如何发觉问题的所在是关键,等真正找到了问题的所在,解决的方式就有N多了(如该贴,win和unix字符编码不一的问题)&#33;<br />    在该贴中,我就是根据楼主的提示,逐步的模拟出错误重现,最终发现问题&#33;至于解决的方法,大家给的方法都很好&#33;(但是大家不知道注意没有,楼主自己一开始也没有意识到问题究竟在那),一般我们在unix上vi打开一个win平台写的文本文件,如果有回车换行的问题,我记得一般是每行的结尾都是^M结尾,这个很容易给我们提示出是什么问题.但是如果他没有提示呢(这里我也觉得很怪?怎么没有^M呢?),只好把操作流程一步步写清楚,逐步分析,自己的思路清晰,别人帮你的时候也容易看出究竟是那步可能藏有隐患&#33;<br />   这才是我们最后学到的真的的东西&#33;

2004-9-12 22:51 开心就好
seven is a great guy&#33;

2004-9-13 14:42 jcnll
<!--emo&:blush:--><img src='style_emoticons/default/blush.gif' border='0' style='vertical-align:middle' alt='blush.gif' /><!--endemo--> <br />偶对AIX是一点都不熟!<br /> <!--emo&:grin:--><img src='style_emoticons/default/grin.gif' border='0' style='vertical-align:middle' alt='grin.gif' /><!--endemo--> 多亏大家帮忙呀

页: [1] 2
查看完整版本: AIX下关于DB2的问题


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.