我是SQL新手,但设法使用ij将我的CSV数据导入Apache Derby数据库。
我的表中没有主键,也没有适合的现有字段,所以我想创建一个新字段,生成唯一的数字来填充它,并将其设置为主键。我怎么能这样做?
例如,我试过
ALTER TABLE myTable ADD pk AUTO_INCREMENT PRIMARY KEY
但我在AUTO_INCREMENT上遇到语法错误。
此外,当我谷歌这类东西时,我发现了很多SQL提示,但其中很少似乎适用于德比。是否有我应该搜索的SQL的特定变体?
答案 0 :(得分:1)
我遇到了同样的问题,据我所知,没有办法为现有的Apache Derby数据库创建新的主键。 Derby不允许您添加GENERATED作为属性的列。
我发现这种方法效果最好。
CREATE TABLE contacts (firstname varchar(50), lastname varchar(50),
address varchar(50), phone1 varchar(14), phone2 varchar(14) );
看起来像:
firstname lastname address phone1 phone2
rich bush 27 oak hill dr 11932035551234 11932035551234
CREATE TABLE contactsTemp
(primary_key INT not null GENERATED ALWAYS as identity,
firstname varchar(50), lastname varchar(50),
address varchar(50), phone1 varchar(14), phone2 varchar(14))
分解primary_key字段。前两个是标准SQL关键字。密钥将是一个整数,并且不能为空。 Apache DB使用生成的关键字作为其AUTO_GENERATED。有两个关键字可以跟随生成的ALWAYS和AS DEFAULT。始终意味着它不能手动输入,AS DEFAULT意味着它将是自动的,除非您指定一个数字。根据{{3}}
INSERT
insert into contactsTemp (firstname, lastname, address , phone1 , phone2 )
SELECT firstname, lastname, address , phone1 , phone2 from contacts
DROP TABLE contacts
RENAME TABLE contactstemp TO contacts
答案 1 :(得分:1)
这已在Derby的问题跟踪器(Jira)中记录为DERBY-3888。对此问题进行评论和/或投票可能会增加在下一个版本中修复它的可能性......