PostgreSQL是一款开源的关系型数据库管理系统,具有可靠的性能、丰富的功能,在很多场景都很受欢迎。本篇内容主要教大家如何把数据导入到PostgreSQL数据库。
一、安装PostgreSQL
如果你的服务器还没安装PostgreSQL,请根据以下步骤进行操作,安装之后可直接跳至第二步。
这里以Ubuntu 系统为例,用系统自带的apt包管理器来装,步骤很简单。先更新一下系统的软件包列表,确保能获取到最新的PostgreSQL版本:
sudo apt update
安装PostgreSQL主程序和配套工具(postgresql-contrib 包含一些实用的扩展功能):
sudo apt install postgresql postgresql-contrib
安装完成后,启动PostgreSQL服务:
sudo service postgresql start
最后验证一下是否安装成功、服务是否在运行,执行以下命令查看状态:
sudo systemctl status postgresql
如果没问题,会看到类似 “active (running)” 的提示,说明PostgreSQL已经正常启动了。
二、创建目标数据库
如果要导入数据到一个新的数据库(还没创建),可以按下面的步骤来建库:
首先进入PostgreSQL的命令行界面(psql),这里用默认的 “postgres” 超级用户登录(这个用户是安装PostgreSQL时自动创建的):
sudo -u postgres psql
执行后会进入psql交互模式,命令行提示符会变成 “postgres=#”。
用CREATE DATABASE命令创建新数据库,把 “my_db” 换成你想要的数据库名(比如 “company_db”):
CREATE DATABASE my_db;
执行后如果出现“CREATE DATABASE”的提示,就说明数据库创建成功了。
接下来可以连接到刚创建的数据库(后续导入数据也可以用这个连接),命令是:
\c my_db
出现 “You are now connected to database “my_db” as user “postgres”.” 的提示,就表示已经成功连接到目标数据库,接下来就能准备导入数据了。
三、根据数据格式选择对应的导入方法
数据文件的格式不同,导入的方法也不一样。下面分别讲三种常见格式(SQL文件、CSV文件、PostgreSQL dump文件)的导入步骤,根据自己的文件类型选对应的方法就行。
1、从SQL文件导入
如果你的数据是保存在SQL文件里的(比如从其他数据库导出的.sql备份文件),导入步骤如下:
先退出之前的 psql 交互模式(如果还在里面的话),按\q然后回车就能回到系统终端:
\q
在系统终端里执行以下命令,把 SQL 文件导入到目标数据库:
psql -U postgres -d my_db -f /path/to/yourfile.sql
这里解释一下命令里的各个部分,方便你理解和修改:
- -U postgres:指定用 “postgres” 用户登录 PostgreSQL(如果你的数据库用其他用户,就换成对应的用户名);
- -d my_db:指定要导入到的目标数据库,把 “my_db” 换成你实际的数据库名;
- -f /path/to/yourfile.sql:指定 SQL 文件的路径和文件名,比如你的文件在 “/home/backup/data.sql”,就把这部分换成对应的路径。
执行命令后,系统会提示你输入 “postgres” 用户的密码(如果之前设置过的话),输入正确后就开始导入了。导入时间根据SQL文件大小而定,等命令执行完成,数据就导入到数据库里了。
2、从CSV文件导入
如果你的数据是CSV格式(比如从Excel、Excel表格导出的.csv文件),可以直接导入到PostgreSQL的已有表中。注意导入前要确保目标表已经存在,并且表的列数、列类型要和 CSV 文件里的数据对应上(比如CSV里第一列是 “id”(数字),表也要有 “id” 列且类型是整数)。
导入步骤很简单,在 psql 交互模式下(先按第二步的方法连接到目标数据库),执行以下 SQL 命令:
COPY my_table(column1, column2, column3)
FROM ‘/path/to/yourfile.csv’
DELIMITER ‘,’
CSV HEADER;
同样解释一下关键部分:
- my_table:换成你要导入数据的表名(比如 “user_info”);
- (column1, column2, column3):换成表的实际列名,顺序要和 CSV 文件里的列一致(比如 CSV 是 “id,name,age”,这里就写 “(id, name, age)”);
- /path/to/yourfile.csv:CSV 文件的实际路径(比如 “/home/data/user_list.csv”);
- DELIMITER ‘,’:指定 CSV 文件的分隔符(默认是逗号,如果你用的是其他分隔符,比如分号 “;”,就改成DELIMITER ‘;’);
- CSV HEADER:告诉 PostgreSQL “CSV 文件的第一行是列名”,如果你的 CSV 没有列名(第一行就是数据),就去掉这一句。
执行后如果没报错,就说明 CSV 里的数据已经成功导入到表中了。
3、从PostgreSQL dump文件导入
如果你的文件是用PostgreSQL自带的pg_dump命令导出的dump文件(通常后缀是.dump 或.sql),这种文件最好用专门的pg_restore工具来导入,能更好地还原数据库的结构、数据和索引等。
导入命令在系统终端里执行(不用进 psql),格式如下:
pg_restore -U postgres -d my_db /path/to/yourfile.dump
各部分解释:
- -U postgres:登录用户(和之前一样,换成你的实际用户);
- -d my_db:目标数据库名;
- /path/to/yourfile.dump:dump 文件的路径(如果是.sql 后缀的 dump 文件,也可以用这个命令)。
这个命令会自动把dump文件里的所有内容(表结构、数据、存储过程等)还原到目标数据库,比直接用psql导入更完整,适合PostgreSQL自身的备份文件还原。
四、验证数据是否导入成功
导入完成后,最好检查一下数据有没有正确导进去,避免出问题。先进入psql交互模式并连接到目标数据库:
sudo -u postgres psql
\c my_db # 连接到你的目标数据库
查看数据库里的表,确认表是否存在(如果是导入SQL/dump文件,会自动创建表):
\dt
执行后会列出数据库里所有的表,如果能看到你预期的表(比如导入的“orders”“products” 表),说明表结构导入成功了。
再查看表中的数据,比如查看 “my_table” 表的前 10 行数据:
SELECT * FROM my_table LIMIT 10;
如果能看到正确的数据,就说明数据导入没问题了。
PostgreSQL本身功能很强,不管是迁移数据、还原备份,还是日常管理,都很方便,学会这些基础操作,后续用起来会更顺手。
相关推荐:
-
广告合作
-
QQ群号:4114653







