首页 文章

将sql dump导入postgresql数据库

提问于
浏览
324

我们正在切换主机,而旧的主机提供了我们站点的postgresql数据库的sql转储 . 现在我试图在本地wamp服务器上设置它来测试这个 .

唯一的问题是我不知道如何在我设置的postgresql 9中导入这个数据库 .

我试过pgAdmin III,但我似乎无法找到'导入'功能 . 所以我只是打开了SQL编辑器并将转储的内容粘贴在那里并执行它,它创建了表,但是当他试图将数据放入其中时我不断给出错误 .

ERROR:  syntax error at or near "t"
LINE 474: t 2011-05-24 16:45:01.768633 2011-05-24 16:45:01.768633 view...

The lines:
COPY tb_abilities (active, creation, modtime, id, lang, title, description) FROM stdin;
t   2011-05-24 16:45:01.768633  2011-05-24 16:45:01.768633  view    nl ...

我也尝试使用命令提示符,但我无法找到我需要的命令 .

如果我做

psql mydatabase < C:/database/db-backup.sql;

我收到了错误

ERROR:  syntax error at or near "psql"
LINE 1: psql mydatabase < C:/database/db-backu...
        ^

导入数据库的最佳方法是什么?

10 回答

  • 556

    我不确定这是否适用于OP的情况,但我发现在交互式控制台中运行以下命令对我来说是最灵活的解决方案:

    \i 'path/to/file.sql'
    

    只需确保您已连接到正确的数据库 . 此命令执行指定文件中的所有SQL命令 .

  • 268

    我注意到很多例子对于localhost来说过于复杂,在很多情况下只存在没有密码的postgres用户:

    psql -d db_name -f dump.sql
    
  • 23

    工作得很好,在命令行中,所有参数都是必需的,-W代表密码

    psql -h localhost -U user -W -d database_name -f path/to/file.sql
    
  • 30

    这对我有用:

    sudo -u postgres psql db_name < 'file_path'
    
  • 20

    我用:

    cat /home/path/to/dump/file | psql -h localhost -U <user_name> -d <db_name>
    

    希望这会对某人有所帮助 .

  • 0

    你可以在pgadmin3中完成 . 删除转储包含的架构 . 然后右键单击数据库并选择“还原” . 然后,您可以浏览转储文件 .

  • 3
    psql databasename < data_base_dump
    

    那是你要找的命令 .

    注意:必须在导入之前创建databasename . 看看PostgreSQL Docs Chapter 23. Backup and Restore .

  • 2

    只是为了测试,如果您的转储被压缩,您可以做类似的事情

    gunzip -c filename.gz | psql dbname

    正如雅各布所说,PostgreSQL docs描述了这一切 .

  • 40

    我相信你想在psql中运行:

    \i C:/database/db-backup.sql
    
  • 85

    这是您要查找的命令 .

    psql -h hostname -d databasename -U username -f file.sql
    

相关问题