2009-02-20 84 views
2

我想用DB2运行一个简单的SQL语句,并遇到一些问题。 我想在一个txt/DB2文件一个脚本,并有发动机过程中的所有命令为什么我得到这个SQL/DB错误?

这里是脚本:

CONNECT TO MYDB 

CREATE TABLE PERSONS(
    PID SMALLINT NOT NULL, 
    NAME VARCHAR(20) NOT NULL 
) 

TERMINATE 

当我运行DB2 -f/pathtofile我得到:

SQL0104N An unexpected token "(" was found following "CREATE TABLE PERSONS". 
Expected tokens may include: "END-OF-STATEMENT". SQLSTATE=42601 

我在做什么错?我的脚本有问题吗? 另外,为什么它没有“;”在我的发言结束时终止者?

谢谢

+0

当您将语句键入db2命令时会发生什么翻译吗? – 2009-02-20 06:17:09

回答

3

可能这会有所帮助,
http://www.uc.edu/R/r25/documentation/Version3.2/install_instructions.pdf

脚本使用分号(;)来终止每个SQL 命令。如果您使用DB2命令行处理器,请记住使用“-t”标志。
...
如果不使用-t标志,你会得到错误,如以下运行时的db2ct32.sql脚本

创建表“帐户”(
DB21034E被处理的命令作为一个SQL语句,因为它不是一个
有效的命令行处理器命令在SQL处理期间,它返回:
SQL0104N意外的标记“(”之后发现“吃表‘帐户’”
预期标记可能包括: “END-OF-STATEMENT”SQLSTATE = 42601

所以,我会添加分号并用-t开关调用它无论它代表什么废话。
我看着样品,他们使用类似

db2 -tf "pathtofile" 

还与

db2 -tvf "pathtofile" 

你可能会得到更多的诊断。
不要将专有软件推到极限,它们并不那么宽。

0

你的名字线

变更后的逗号:

NAME VARCHAR(20) NOT NULL, 

到:

+0

感谢您注意到这一点 - 但我仍然收到相同的错误。 – barfoon 2009-02-20 04:30:09

0

我会插入空格或行分隔符在CREATE TABLE PERSONS和(
jus要安全。

+0

我同意 - 我添加了一个,仍然得到相同的错误。 – barfoon 2009-02-20 05:14:26

0

如果我有分号,并使用了-t标志,我得到:

SQL0104N An unexpected token "/" was found following "BEGIN-OF-STATEMENT". 
Expected tokens may include: "<values>". SQLSTATE=42601 
+0

尝试db2 -tvf“pathtofile” – eugensk00 2009-02-20 06:31:51