我的Java代碼:文本表JDBC的HSQLDB例外
conn = DriverManager.getConnection(url, "user", "password"); // line 1
stm = conn.createStatement(); // line 2
stm.execute("CREATE TEXT TABLE someTableName("NLID" VARCHAR(20),
"Scheduled.Primary.Scripting.Code" VARCHAR(20), "Scheduled.Site" VARCHAR(20),
"Scheduled.Location.Long.Name" VARCHAR(20),
"primary_key_1644" int PRIMARY KEY)"); // line 3
stm.execute("SET TABLE someTableName SOURCE
"/some.csv;ignore_first=true;all_quoted=true;shutdown=true""); // line 4
的CSV正在被鏈接到HSQLDB是:
NLID,Scheduled.Primary.Scripting.Code,Scheduled.Site,Scheduled.Location.Long.Name,primary_key_1644
100,INMRSB,Shopping,Shopping General-Banner-728x90-INMRSB-I,1
100002,MSVT08,MSN Video,msnbc.com-TODAYshow.com Special Sponsorships 8-Streaming Media-300x60-MSVT08-S,2
100004,MSV10T,MSN Video,msnbc.com-TODAYshow.com Special Sponsorships 10-Streaming Media-300x60-MSV10T-S,3
我得到下面的異常在第4行:
java.sql.SQLException: bad TEXT table source file - line number: 1196 java.lang.NumberFormatException: For input string: "Body Connection-Banner-728x90-HEAMBA-S" in statement [SET TABLE someTableName SOURCE "/some.csv;ignore_first=true;all_quoted=true;shutdown=true"] at org.hsqldb.jdbc.Util.sqlException(Unknown Source) at org.hsqldb.jdbc.Util.sqlException(Unknown Source) at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source) at java.lang.NumberFormatException: For input string: "Body Connection-Banner-728x90-HEAMBA-S" at org.hsqldb.error.Error.error(Unknown Source) at org.hsqldb.TextTable.connect(Unknown Source) at org.hsqldb.TextTable.openCache(Unknown Source) at org.hsqldb.TextTable.setDataSource(Unknown Source) at org.hsqldb.StatementCommand.getResult(Unknown Source) at org.hsqldb.StatementCommand.execute(Unknown Source) at org.hsqldb.Session.executeCompiledStatement(Unknown Source) at org.hsqldb.Session.executeDirectStatement(Unknown Source) at org.hsqldb.Session.execute(Unknown Source) ... 6 more Caused by: java.lang.NumberFormatException: For input string: "Body Connection-Banner-728x90-HEAMBA-S" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at org.hsqldb.rowio.RowInputText.readInteger(Unknown Source) at org.hsqldb.rowio.RowInputBase.readData(Unknown Source) at org.hsqldb.rowio.RowInputText.readData(Unknown Source) at org.hsqldb.rowio.RowInputBase.readData(Unknown Source) at org.hsqldb.rowio.RowInputText.readData(Unknown Source) at org.hsqldb.RowAVLDiskData.getRowData(Unknown Source) at org.hsqldb.persist.RowStoreAVLDiskData.get(Unknown Source) ... 14 more
任何幫助將是可觀的。
EDITED: HSQLDB拋出NumberFormatException的,而讀其被定義爲VARCHAR列!!!
MODIFIED:發生異常是因爲某個列值中有一個逗號,例如"Mind, Body Connection-Banner-728x90-HEAMBA-S"
。由於hsqldb將csv作爲表讀取,因此額外的逗號會被hsql解釋爲附加列。任何人都可以指導我如何繞過這個?
很明顯「Body Connection-Banner-728x90-HEAMBA-S」不是一個數字,所以錯誤。 – 2013-03-01 07:23:29
該列被定義爲VARCHAR(20)。 – NINCOMPOOP 2013-03-01 07:23:53
列可能被定義爲varchar,但在您的代碼中的某處,您試圖將其轉換爲數字,並且您不會向我們顯示該代碼:) – 2013-03-01 07:24:51