2015-10-19 45 views
0

我正在爲bigsql編寫sql查詢。Bigsql像謂詞錯誤

如果它看起來像這樣

select t.city from table t where t.city like 'A%' 

它工作正常,但接下來的一個失敗:

select t.city from table t where t.city like 'A%' escape '\' 

我只添加逃生的表達,它給我下面的錯誤

Error Code: -5199, SQL State: 57067] DB2 SQL Error: SQLCODE=-5199, SQLSTATE=57067, SQLERRMC=Java DFSIO;1;2, DRIVER=4.15.82 

我發現這個文件http://www-01.ibm.com/support/knowledgecenter/SSPT3X_2.1.2/com.ibm.swg.im.infosphere.biginsights.bigsql.doc/doc/bsql_like_predicate.html?lang=en 因此,似乎逃跑應該工作。

如果我逃逃角色,我得到另一個錯誤

Error Code: -130, SQL State: 22019] DB2 SQL Error: SQLCODE=-130, SQLSTATE=22019, SQLERRMC=null, DRIVER=4.15.82. 2) [Error Code: -727, SQL State: 56098] DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-130;22019;, DRIVER=4.15.82 

但是,如果我不使用「\」字符作爲逃跑的事,但另一種,如「/」,它工作正常。

任何想法,爲什麼它可能發生?

回答

0

試試吧。您可能不得不逃脫轉義角色。

select t.city from table t where t.city like 'A%' escape '\\' 
+0

我編輯問題,回答你的建議。 – user2281439

+0

這是爲了您瞭解錯誤:https://www-01.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.codes/src/tpc/db2z_n.dita – aadarshsg

+0

是的,我看到了這個頁面。沒有sqlcode = -5199 – user2281439

0

基於此示例:

\connect bigsql 
drop table if exists stack.issue1; 

create hadoop table if not exists stack.issue1 (
f1 integer, 
f2 integer, 
f3 varchar(200), 
f4 integer 
) 
stored as parquetfile; 

insert into stack.issue1 (f1,f2,f3,f4) values (0,0,'Detroit',0); 
insert into stack.issue1 (f1,f2,f3,f4) values (1,1,'Mt. Pleasant',1); 
insert into stack.issue1 (f1,f2,f3,f4) values (2,2,'Marysville',2); 
insert into stack.issue1 (f1,f2,f3,f4) values (3,3,'St. Clair',3); 
insert into stack.issue1 (f1,f2,f3,f4) values (4,4,'Port Huron',4); 

select * from stack.issue1; 

select * from stack.issue1 where f3 like 'M%'; 

\quit 

我得到如下結果:

jsqsh --autoconnect --input-file=./t.sql --output-file=t.out 
0 rows affected (total: 0.28s) 
0 rows affected (total: 0.22s) 
1 row affected (total: 0.37s) 
1 row affected (total: 0.35s) 
1 row affected (total: 0.38s) 
1 row affected (total: 0.35s) 
1 row affected (total: 0.35s) 
5 rows in results(first row: 0.33s; total: 0.33s) 
2 rows in results(first row: 0.26s; total: 0.26s) 

cat t.out 
+----+----+--------------+----+ 
| F1 | F2 | F3   | F4 | 
+----+----+--------------+----+ 
| 1 | 1 | Mt. Pleasant | 1 | 
| 0 | 0 | Detroit  | 0 | 
| 4 | 4 | Port Huron | 4 | 
| 3 | 3 | St. Clair | 3 | 
| 2 | 2 | Marysville | 2 | 
+----+----+--------------+----+ 
+----+----+--------------+----+ 
| F1 | F2 | F3   | F4 | 
+----+----+--------------+----+ 
| 1 | 1 | Mt. Pleasant | 1 | 
| 2 | 2 | Marysville | 2 | 
+----+----+--------------+----+ 

這說明你的語法是正確的,但是,基於-5199的錯誤代碼,這是FMP進程沒有足夠內存或Hadoop I/O組件存在問題的問題。您可以通過發行 db2來獲得有關此錯誤的更多信息? sql5199n 從命令行。

SQL錯誤消息應將您指向發生錯誤的節點以及Big SQL日誌文件所在的位置和相關的讀取器日誌文件。

0

SQL5199錯誤通常意味着HDFS的問題(您可以通過db2 \?SQL5199獲取有關該消息的詳細信息 - 用戶名爲bigsql)。檢查bigsql和DFS日誌,看看是否給出了任何問題的指針。

希望這會有所幫助。