postgresql - 在 PostgreSQL COPY 命令中添加行号
问题描述
当我运行时,COPY my_table FROM 'my_table_source.csv' WITH HEADER CSV;
是否可以提取 csv 文件中的行号并将该信息添加到我的目标表中?我有一些来自外部来源的平面文件,并进入多个数据库,这些文件对于在以后进行的偶尔审计期间进行追溯很有用。谢谢。
解决方案
添加列名并省略序列名:
CREATE TEMP TABLE passwords (
seq serial not null PRIMARY KEY
, name text
, passwd text
, uid integer not null
, gid integer not null
, gcos text
, home text
, shell text
);
COPY passwords(name,passwd,uid,gid,gcos,home,shell)
FROM '/etc/passwd' WITH csv DELIMITER ':' ;
SELECT * FROM passwords
WHERE seq < 10
;
输出:
CREATE TABLE
COPY 48
seq | name | passwd | uid | gid | gcos | home | shell
-----+--------+--------+-----+-------+--------+----------------+-------------------
1 | root | x | 0 | 0 | root | /root | /bin/bash
2 | daemon | x | 1 | 1 | daemon | /usr/sbin | /usr/sbin/nologin
3 | bin | x | 2 | 2 | bin | /bin | /usr/sbin/nologin
4 | sys | x | 3 | 3 | sys | /dev | /usr/sbin/nologin
5 | sync | x | 4 | 65534 | sync | /bin | /bin/sync
6 | games | x | 5 | 60 | games | /usr/games | /usr/sbin/nologin
7 | man | x | 6 | 12 | man | /var/cache/man | /usr/sbin/nologin
8 | lp | x | 7 | 7 | lp | /var/spool/lpd | /usr/sbin/nologin
9 | mail | x | 8 | 8 | mail | /var/mail | /usr/sbin/nologin
(9 rows)
推荐阅读
- tensorflow - 在 keras 中实现自定义损失函数时 sample_weights 会发生什么?
- android - 意图问题和firebase不更新值
- sap-cloud-platform - 我们如何使用 SAP 可以从 Stackblitz 中的 Spartacus Angular 应用程序中获取基础 url?
- c# - 如何将 double 类型的 ac# 变量转换为 sql float
- sql - 在“in”子句 postgres 中使用变量
- oauth - 授权代码 PKCE - 可以使用该代码后端请求令牌吗?
- java - Hibernate 不使用 JPA 创建 PostgreSQL 模式对象
- angular - 无法安装angular9....!!!Visual Studio 要求 git 登录?
- laravel - 如何在 Laravel 迁移中删除主要约束
- c - 接收错误:“循环条件中使用的变量未在循环体中修改”