db2数据库导入时自动增长的ID列如何填写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了db2数据库导入时自动增长的ID列如何填写相关的知识,希望对你有一定的参考价值。

db2数据库导入时自动增长的ID列是否需要填写,是从1开始填写,还是从原数据中找出最大值加1。

DB2 列的自动增长都是通过序列实现的。
所以你需要确定DB2的列引用的是哪个序列,才能确定当前值、下一列值。如何确定引用哪个序列,最简单的办法是问谁添加的自动增长序列。最2的办法是直接挨个查syscat.sequences视图。执行values(next value for 序列名)能打印下一自动增长值。

插入这样的值,跟插入正常列一样。因为next value for seq_001 实际就是打印一个数字。你知道序列规则的话直接填真实数值插入就可以。

create sequence seq_001

start with 1

increment by 1

no maxvalue

no cycle

cache 21
;

insert into test1(cid,cname,sex,age) values(next value for seq_001,'scott','M',30);追问

我是直接进行数据导入,结果出错。列名都对,就是自动增长的ID是空的,结果出现下面的错误,是选择从第二行开始导入,第一行是列名,第二行开始是需导入的数据,59列里面有很多列是空值,自动增长的ID是空的。如何解决呢?

 

追答

这个工具没用过,如果现在自动增长是空的话,建议直接UPDATE,赋值语句update test1 set id=(next value for seq_001)
where 选中你插入的那段数据

参考技术A DB2自增长列:
1当想将表中一列修改为自动增长时,可用下面命令:
Alter table <table name> alter column <column name> set not null
Alter table <table name> alter column <column name> set generated always as identity (start with 1,increment by 1)
上面命令是在改一表中列的属性时,在网上找到的很有用。
2当修改表中一列自动增长的开始值时,可用下面的命令:
ALTER TABLE <talbe_name> ALTER COLUMN <column name> RESTART WITH 18;
参考技术B 自增长的ID 能填写么?只读的追问

通过excel表导入,表格列名和数据表内的字段名一致,数据表内的有很多条,excel表也有很多条,导入时选择从哪行开始,在SQL2000是从列名开始,但列名不会导入的,在db2中能如何导入,选择从第一行(含列名)还是从第二行从实际数据开始导入。
数据表内的字段中有一个是自增值的,excel表的本列是不是需要填写,或如何填写?
谢谢

参考技术C 不需要填写的。

看那个 序列 的当前值是多少?追问

通过excel表导入,表格列名和数据表内的字段名一致,数据表内的有很多条,excel表也有很多条,导入时选择从哪行开始,在SQL2000是从列名开始,但列名不会导入的,在db2中能如何导入,选择从第一行(含列名)还是从第二行从实际数据开始导入。
数据表内的字段中有一个是自增值的,excel表的本列是不是需要填写,或如何填写?
谢谢

追答

数据库中这列设置为 自动增长啊,那么excel的就可以不用填写的。

追问

只自增列的右边没有提示,其它的列两边都有对号,就是出上面的提示

数据库如何设置主键(ID)自动增长啊(SQL语句)?

参考技术A 自动增长列(auto_increment)
sqlserver数据库
(identity)
oracle数据库(
sequence)
给主键添加自动增长的数值,列只能是整数类型
CREATE
TABLE
stu(
classId
int
primary
key
auto_increment,
name
varchar(50)
);
auto_increment是用于主键自动增长的,从1开始增长,当你把第一条记录删除时,再插入第二跳数据时,主键值是2,不是1
_____________________________________________________
INSERT
INTO
student(name)
values(‘abc’);
闫焱琢.
参考技术B 在创建表的时候可以设置,方法如下,用一下sql语句。
create table tableName(
id int identity(1,1) primary key,
data varchar(50))解释:其中identity(1,1)代表自增,第一个1代表从1开始计数,第二个1代表每次增长1。
参考技术C 如果是新增列可以如下
alter
table
table1
add
id
int
identity
not
null;
如果是修改,可到SSMS中选中该字段,然後点修改,在右边最下方修改“标识”为是
参考技术D 如果是新增列可以如下
alter
table
table1
add
id
int
identity
not
null;
如果是修改,可到SSMS中选中该字段,然後点修改,在右边最下方修改“标识”为是

以上是关于db2数据库导入时自动增长的ID列如何填写的主要内容,如果未能解决你的问题,请参考以下文章

SQLIte如何设置自动增长的字段?

数据库表ID怎么设置自动增长

Oracle怎么建自动增长列

FireBird 数据库 自动增长列怎么实现的?请高手

数据库表ID怎么设置自动增长

SQLIte如何设置自动增长的字段?