2014-01-07 36 views
0

我插入在卡桑德拉表一組數據的。但我得到.......我的未匹配的列名/值正在發佈的代碼和也表結構如何解決cassandra中不匹配的列名/值?

public static void aMethod2FromData(DetailsVO detailsVO) { 

    System.out.println(detailsVO.getA_no()); 

    StringBuilder sb = new StringBuilder(); 

    int num = (int) (Math.random() * 8847); 
    int radar = (int) (Math.random() * 847); 
    sb.append(
    "INSERT INTO CALL_RATIO_ANALYSYS (A_NO,JAN,FEB,MAR,APR,MAY,JUNE,JULY,AUG,SEP,OCT,NOV,DEC,RADAR_VOICE,RADAR_SMS,RADAR_MMS,RADAR_GPRS,RADAR_OTHER,MMS_INCOMING,MMS_OUTGOING,VOICE_INCOING,VOICE_OUTGOING,SMS_INCOMING,SMS_OUTGOING,GPRS_SOCIAL,GPRS_MAIL,GPRS_GOOGLE,GPRS_ENTERTAINMENT,GPRS_BUSINESS)") 
      .append("VALUES("); 



     sb.append("'").append(detailsVO.getA_no()).append("',"); 
     //calculation for Jan to dec 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     sb.append("'").append(num).append("',"); 
     //end here 
     //start calculation of radar 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     //ends here 
     //mms incoming 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     //ends here 
     //voice incoming outgoing 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     //end here 
     //sms incoming outgoing 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     //ends here 
     //gprs calculation 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("',"); 
     sb.append("'").append(radar).append("')"); 
     //ends here 
     System.out.println(sb.toString()); 
     String cql = sb.toString(); 
     session.execute(cql); 
    } 

這是表結構

CREATE TABLE CALL_RATIO_ANALYSYS(
A_NO TEXT, 
JAN TEXT, 
FEB TEXT, 
MAR TEXT, 
APR TEXT, 
MAY TEXT, 
JUNE TEXT, 
JULY TEXT, 
AUG TEXT, 
SEP TEXT, 
OCT TEXT, 
NOV TEXT, 
DEC TEXT, 
RADAR_VOICE TEXT, 
RADAR_SMS TEXT, 
RADAR_MMS TEXT, 
RADAR_GPRS TEXT, 
RADAR_OTHER TEXT, 
MMS_INCOMING TEXT, 
MMS_OUTGOING TEXT, 
VOICE_INCOMING TEXT, 
VOICE_OUTGOING TEXT, 
SMS_INCOMING TEXT, 
SMS_OUTGOING TEXT, 
GPRS_SOCIAL TEXT, 
GPRS_MAIL TEXT, 
GPRS_GOOGLE TEXT, 
GPRS_ENTERTAINING TEXT, 
GPRS_BUSINESS TEXT, 
PRIMARY KEY(A_NO) 
); 

我無法理解其中列不與數據相匹配,請幫助

+0

Afaik,cql3在默認情況下不區分大小寫,除非您引用所有內容。 –

+0

它可以幫助您發佈您收到的錯誤消息。 – Theo

+0

我投票結束,我認爲你應該表明你已經做了一些最小的工作來嘗試瞭解問題,然後再讓其他人爲你計數。如果計算機告訴你沒有足夠的值,請計算您的值並查看它們是否相加。 – Theo

回答

4

我建議你使用準備好的語句。這不是你的問題的直接解決方案,但你不應該建立這樣的CQL語句。它效率低下,代碼變得混亂。有可能是一個逗號或別的東西丟失,但想檢查你的代碼的語法花費更多的時間比只用準備好的語句改寫它:

PreparedStatement statement = session.prepare("INSERT INTO CALL_RATIO_ANALYSYS (A_NO,JAN,FEB,MAR,APR,MAY,JUNE,JULY,AUG,SEP,OCT,NOV,DEC,RADAR_VOICE,RADAR_SMS,RADAR_MMS,RADAR_GPRS,RADAR_OTHER,MMS_INCOMING,MMS_OUTGOING,VOICE_INCOING,VOICE_OUTGOING,SMS_INCOMING,SMS_OUTGOING,GPRS_SOCIAL,GPRS_MAIL,GPRS_GOOGLE,GPRS_ENTERTAINMENT,GPRS_BUSINESS) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 
BoundStatement boundStatement = statement.bind(detailsVO.getA_no(), num, num, num, num, num, num, num, num, num, num, num, num, radar, radar, radar, radar, radar, radar, radar, radar, radar, radar, radar, radar, radar, radar, radar); 
session.execute(boundStatement); 

保持準備好的聲明各地,並重新使用它。

編輯所以這裏真正的問題是你缺少最後一個參數的值。如果錯誤消息顯示您的值數量不正確,則可以幫助您計算值。

+0

我非常抱歉 – Subho

相關問題