我是PostgreSQL的新手,并且正在使用此数据库。
我有一个导入的文件,并且试图获取具有特定ID的行。但是ID尚未定义,如您在此图片中所见:
那么我如何访问该ID?我想使用这样的SQL命令:
SELECT * from table_name WHERE ID = 1;
答案 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
列将自动填充。