文档首页/ 云数据库 GaussDB/ 用户指南/ 数据库迁移/ 使用gs_restore命令导入数据
更新时间:2024-11-11 GMT+08:00

使用gs_restore命令导入数据

操作场景

gs_restore是GaussDB数据库提供的与gs_dump配套的导入工具。通过该工具,可将gs_dump导出的文件导入至数据库。gs_restore支持导入的文件格式包含自定义归档格式、目录归档格式和tar归档格式。

gs_restore具备如下两种功能。

  • 导入至数据库

    如果指定了数据库,则数据将被导入到指定的数据库中。其中,并行导入必须指定连接数据库的密码。导入时生成列会自动更新,并像普通列一样保存。

  • 导入至脚本文件

    如果未指定导入数据库,则创建包含重建数据库所需的SQL语句脚本,并将其写入至文件或者标准输出。该脚本文件等效于gs_dump导出的纯文本格式文件。

gs_restore工具在导入时,允许用户选择需要导入的内容,并支持在数据导入前对等待导入的内容进行排序。

注意事项

gs_restore默认是以追加的方式进行数据导入。为避免多次导入造成数据异常,在进行导入时,建议选择使用“-c”和“-e”参数。"-c"表示在重新创建数据库对象前,清理(删除)已存在于将要还原的数据库中的数据库对象;“-e”表示当发送SQL语句到数据库时如果出现错误请退出,默认状态下会继续,且在导入后会显示一系列错误信息。

迁移准备

  1. 准备弹性云服务器或可通过公网访问GaussDB。
    • 通过弹性云服务器连接GaussDB数据库实例,需要创建一台弹性云服务器。

      创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“购买弹性云服务器”和“登录弹性云服务器”。

    • 通过公网地址连接GaussDB数据库实例,需具备以下条件。
      1. 先对GaussDB数据库实例绑定公网地址,如何绑定公网地址,请参见绑定弹性公网IP
      2. 保证本地设备可以访问GaussDB数据库实例绑定的公网地址。
  2. 在准备的弹性云服务器或可访问GaussDB数据库的设备上,安装gsql客户端,并连接到GaussDB数据库实例。详情请参见使用gsql连接数据库

操作步骤

  1. 将gs_dump导出的文件上传到设备上,gs_dump导出文件请参考使用gs_dump和gs_dumpall命令导出数据
  2. 使用gs_restore命令,从导出文件中,将数据库的所有对象的定义导入到目标数据库中。

    • 示例一:执行gs_restore,指定数据库IP,指定已存在的数据库(如gs_example_restore),导入指定gs_example_dump.tar文件(tar归档格式)中gs_example数据库的数据和对象定义。示例中将不体现中间的打印信息。
      gs_restore -U root /tmp/data/gs_example_dump.tar -p 8000 -d gs_example_restore -e -h 192.*.*.139;
      Password:
      restore operation successful
      total time: 1430  ms
    • 示例二:执行gs_restore,指定数据库IP,指定已存在的数据库(如gs_example_restore),导入指定gs_example_dump.tar文件(tar归档格式)中gs_example数据库的数据和对象定义。同时清理(删除)已存在于将要导入的数据库中的数据库对象。示例中将不体现中间的打印信息。
      gs_restore -U root /tmp/data/gs_example_dump.tar -p 8000 -d gs_example_restore -e -c -h 192.*.*.139;
      Password:
      restore operation successful
      total time: 1621  ms
    表1 常用参数说明

    参数

    参数说明

    举例

    -U

    连接数据库的用户名。

    -U jack

    -W

    指定用户连接的密码。

    • 如果主机的认证策略是trust,则不会对数据库管理员进行密码验证,即无需输入-W选项。
    • 如果没有-W选项,并且不是数据库管理员,会提示用户输入密码。

    -W ********

    -d

    连接数据库dbname,并直接将数据导入到该数据库中。

    -d backupdb

    -p

    指定服务器所侦听的TCP端口或本地Unix域套接字后缀,以确保连接。

    -p 8000

    -e

    当发送SQL语句到数据库时如果出现错误,则退出。默认状态下会忽略错误任务并继续执行导入,且在导入后会显示一系列错误信息。

    -e

    -c

    在重新创建数据库对象前,清理(删除)已存在于将要导入的数据库中的数据库对象。

    -c

    -s

    只导入模式定义,不导入数据。当前的序列值也不会被导入。

    -s

相关链接

有关gs_restore命令的更多信息,请参见: