如何将文本文件导入java DB?

时间:2014-07-10 16:54:34

标签: java javadb

我想知道如何将内容从texfile导入数据库(javaDB)。这是我的代码,但是我在执行时收到错误。我还想声明该表的主键是自动递增的。

CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE 
(null,'EXPENDITURE','C:\Users\Me\Desktop\textforimport.txt',null,null,null,0);
// This is my import code

//这是我的错误

Executed successfully in 0.003 s.
Line 1, column 1

Error code 30000, SQL state 38000: The exception 'java.sql.SQLException: 
Attempt to modify an identity column 'EXPENDITURE_ID'.' was thrown while evaluating an expression.

Error code 99999, SQL state 42Z23: Attempt to modify an identity column 'EXPENDITURE_ID'. 
Line 4, column 1

Execution finished after 0.003 s, 1 error(s) occurred.

//创建表的代码

create table Expenditure (
Expenditure_ID integer not null primary key generated always as identity (start with 1,increment by 1),
Expenditure_Description varchar (75) not null,
Expense double not null,
Expense_Date date not null
);

现在我不是java的专家,但我想知道是否有人打电话帮助我。我会很感激。感谢

2 个答案:

答案 0 :(得分:2)

只需将支出_ID 的声明更改为“默认为默认生成”

  

GENERATED BY DEFAULT的标识列只会递增   当没有显式值时,使用插入时的默认值   给出。与GENERATED ALWAYS列不同,您可以指定特定列   要使用的insert语句中的值而不是生成的值   默认值。   source

答案 1 :(得分:0)

我的猜测是这是一个简单的SQL问题,而不是java问题。

由于 Expenditure_ID 列创建为“始终以身份生成的主键”,因此javaDB会自动为您生成。并且,当您尝试操作标识列时,您将收到尝试修改标识列错误。

您可以尝试两种方法:

1)从 textforimport.txt 中删除列/数据 Expenditure_ID 。只需导入支出_说明费用费用_Date 即可。正如我所说,javaDB将为每一行分配一个ID。

<强>

2)如果您需要自己定义支出_ID ,请更改支出表中的支出_ID 列。尝试仅使用“ integer not null ”(没有主键内容)创建它。