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 ("A" VARCHAR (20) , "B" VARCHAR (20) ) DATA CAPTURE NONE ;<br /><br />如果有两行命令,执行DB2 -TVF XX.SQL在AIX下不成功。<br />如:CREATE TABLE DB2ADMIN.A ("A" VARCHAR (20) , "B" VARCHAR (20) ) DATA CAPTURE NONE ;<br />CREATE TABLE DB2ADMIN.B ("C" VARCHAR (20) , "D" 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 ("A" VARCHAR (20) , "B" VARCHAR (20) ) DATA CAPTURE NONE ;<br /><br />如果有两行命令,执行DB2 -TVF XX.SQL在AIX下不成功。<br />如:CREATE TABLE DB2ADMIN.A ("A" VARCHAR (20) , "B" VARCHAR (20) ) DATA CAPTURE NONE ;<br />CREATE TABLE DB2ADMIN.B ("C" VARCHAR (20) , "D" 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--><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 />脚本内容:test.db2<br />insert into test(col1) values(1)@<br />insert into test(col1) values(2)@<br /><br />执行脚本(clp):<br />db2 -td@ -svf test.db2<br />这里用d@来指定我们自己的结束符!<br /><!--c2--></div><!--ec2-->
2004-9-9 16:11
jcnll
XX.SQL是用UltraEdit写的。<br />我的";"不是中文的符号,是在英文下的分号。<br />别的命令结束符号也都试过了啊,都不能执行成功。<br /><br />实验记录如下:<br />1.用db2 -tf filename.sql执行sql类型文件失败(在有命令结束符号的情况下,默认的命令结束符号为";")。<br />2.用db2 -td@ -f filename.sql执行sql类型文件失败(在有命令结束符号的情况下,使用命令结束符号为"@")。
2004-9-9 16:22
larryh
错误信息是什么?
2004-9-9 16:27
jcnll
$ db2 -tvf a.sql<br /> CREATE TABLE DB2ADMIN.b ("b" 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 "CREATE TABLE DB2ADMIN.A ("a" VARCHAR (20)) "<br />was found following "BEGIN-OF-STATEMENT". Expected tokens may include:<br />"<space>". SQLSTATE=42601<br /><br /><br />a.sql内容为:<br />CREATE TABLE DB2ADMIN.a ("a" VARCHAR (20)) DATA CAPTURE NONE;<br />CREATE TABLE DB2ADMIN.b ("b" 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 "all" was found following "<identifier>".<br />Expected tokens may include: "NEW". SQLSTATE=42601
2004-9-9 17:07
seven
天,终于模拟出你的错误来了<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--><br />C:\>db2 -svtf test.txt<br />create table a("a" char(10));create table b("b" char(10))<br />DB21034E 该命令被当作 SQL<br />语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:<br />SQL0104N 在 "BEGIN-OF-STATEMENT" 之后发现意外的标记 "create table A("a"<br />char(10));"。期望的标记可能包括:"<space>"。 SQLSTATE=42601<br /><br /><!--c2--></div><!--ec2--><br /><br />猜想的错误(也是我再次看你的回复是用ultraedit写的脚本):<br /><br />你的脚本是在win上写好ftp到aix上的吧?<br />在win上回车,换行是\n\r<br />在unix上回车,换行是\n<br />所以我把脚本里的建表语句写到一行上来,虽然我也用了;分隔符!错误就模拟出来了<br /><br /><br />你在参照一下,看看是不是这个错误!<br />弄好的,说一声啊!把我的好奇心全引起来<!--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 ("a" VARCHAR (20)) DATA CAPTURE NONE;CREATE TABLE DB2ADMIN.b ("b" VARCHAR (20)) DATA CAPTURE NONE;<br /><br />错误报告为:<br /><br />$ db2 -tvf a.sql<br />CREATE TABLE DB2ADMIN.a ("a" VARCHAR (20)) DATA CAPTURE NONE;CREATE TABLE DB2ADM<br />IN.b ("b" 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 "CREATE TABLE DB2ADMIN.A ("a" VARCHAR (20)) "<br />was found following "BEGIN-OF-STATEMENT". Expected tokens may include:<br />"<space>". SQLSTATE=42601
2004-9-9 17:20
seven
哎呀,我弄成一行是为了模拟的你出错啊!!曲解了你!<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
早说吗!!!<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在上传的时候就自动把字符编码格式转换过来了!(好像ultraedit也可以,但我没有试过,对这个编辑器使用也不熟悉)<br /><br />搞定说一声!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
嗨!哥们客气了!<br /><br />用db2的人应该还是挺多了,我下面发的一贴,都没有人响应<!--emo&:(--><img src='style_emoticons/default/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif' /><!--endemo-->!
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字符编码不一的问题)!<br /> 在该贴中,我就是根据楼主的提示,逐步的模拟出错误重现,最终发现问题!至于解决的方法,大家给的方法都很好!(但是大家不知道注意没有,楼主自己一开始也没有意识到问题究竟在那),一般我们在unix上vi打开一个win平台写的文本文件,如果有回车换行的问题,我记得一般是每行的结尾都是^M结尾,这个很容易给我们提示出是什么问题.但是如果他没有提示呢(这里我也觉得很怪?怎么没有^M呢?),只好把操作流程一步步写清楚,逐步分析,自己的思路清晰,别人帮你的时候也容易看出究竟是那步可能藏有隐患!<br /> 这才是我们最后学到的真的的东西!
2004-9-12 22:51
开心就好
seven is a great guy!
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
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.