PostgreSQL ID列未定义

时间:2018-11-28 19:59:54

标签: postgresql

我是PostgreSQL的新手,并且正在使用此数据库。

我有一个导入的文件,并且试图获取具有特定ID的行。但是ID尚未定义,如您在此图片中所见:

enter image description here

那么我如何访问该ID?我想使用这样的SQL命令:

SELECT * from table_name WHERE ID = 1;

2 个答案:

答案 0 :(得分:1)

如果行的任何行顺序合适,只需根据当前的任意排序顺序添加行号:

CREATE SEQUENCE tbl_tbl_id_seq; 
ALTER TABLE tbl ADD COLUMN tbl_id integer DEFAULT nextval('tbl_tbl_id_seq');

新的默认值将在此过程中自动填写。您可能需要运行VACUUM FULL ANALYZE tbl来删除膨胀并随后更新查询计划程序的统计信息。并可能将该列设置为新的PRIMARY KEY ...

要使其成为完整的serial列:

ALTER SEQUENCE tbl_tbl_id_seq OWNED BY tbl.tbl_id;

请参阅:

答案 1 :(得分:0)

您看到的只是pgAdmin显示的行号,它们实际上并没有存储在数据库中。

如果要为表使用人工数字主键,则必须显式创建它。

例如:

CREATE TABLE mydata (
   id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
   obec text NOT NULL,
   datum timestamp with time zone NOT NULL,
   ...
);

然后从CSV文件复制数据,您将运行

COPY mydata (obec, datum, ...) FROM '/path/to/csvfile' (FORMAT 'csv');

然后id列将自动填充。