我的sql文件(single_table_data.sql
)只包含一个表的数据(我从服务器只转储了一个表)
现在我必须将此sql文件插入到我的数据库中的单个表中,
那么如何将sql文件导入postgres中的单个表?
修改
例如,我有数据库名称SpeedData
和表名CurrentTable
,所以现在我想要
将整个sql文件数据插入此表CurrentTable
注意:sql文件仅包含insert statements
(甚至不包含create语句)
答案 0 :(得分:8)
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