将sql文件数据加载到postgres中的单个表中

时间:2014-01-23 12:11:30

标签: postgresql restore sql-insert

我的sql文件(single_table_data.sql)只包含一个表的数据(我从服务器只转储了一个表)

现在我必须将此sql文件插入到我的数据库中的单个表中,

那么如何将sql文件导入postgres中的单个表?

修改

例如,我有数据库名称SpeedData和表名CurrentTable,所以现在我想要 将整个sql文件数据插入此表CurrentTable

注意:sql文件仅包含insert statements(甚至不包含create语句)

3 个答案:

答案 0 :(得分:8)

来自the documentation

psql dbname < infile

这应创建一个新表,其中包含先前转储的名称,并将所有数据插入其中。将dbname替换为新数据库的名称,将infile替换为包含转储的文件的名称/路径(在您的情况下为single_table_data.sql

如果转储仅包含insert语句,请手动创建表,然后执行 psql -U your_username -d dbname -f single_table_data.sql

答案 1 :(得分:1)

如果我理解正确,您想要从文件创建表并填写数据。 正确的命令是

PGPASSWORD=<password> psql -f /home/.../filename.sql -h localhost -d database_name -U user_name

答案 2 :(得分:0)

您可以简单地将 sql 转储数据导入您的 postgres 数据库。

如果您已经创建了数据库,则无需执行第一步:-

STEP=1

打开终端然后运行以下命令来创建 postgres 数据库和用户:-

sudo -u postgres psql

postgres=# create database mydb;

postgres=# create user myuser with encrypted password 'mypass';

postgres=# grant all privileges on database mydb to myuser;

STEP=2

\c 用于选择您的数据库。

postgres=# \c yourdatabasename

\i 用于导入数据库中的转储数据。

yourdatabasename=# \i path_of_your_dump_file 例如:-

yourdatabasename=# \i /home/developer/projects/django_projects/db_dump.sql

如果您在导入数据时遇到此类错误:-

ERROR: role "yourusername" does not exist

所以你可以使用这个命令让你的“db_user/yourusername”成为超级用户:-

postgres=# ALTER USER fusion WITH SUPERUSER;

ALTER ROLE