输入文件似乎是文本格式转储。请使用psql

时间:2016-11-16 12:29:15

标签: postgresql backup pg-restore

我使用

进行备份
pg_dump db_production > postgres_db.dump

然后我使用scp将其复制到localhost。

现在,当我在本地数据库上导入时,它会出错

pg_restore: [archiver] input file appears to be a text format dump. Please use psql.

使用commad line

pg_restore -d db_development postgres_db.dump

7 个答案:

答案 0 :(得分:58)

在您投票之前

  

这只是文档的一部分!

来自pg_dump文档:

实施例

将名为mydb的数据库转储到SQL脚本文件

$ pg_dump mydb > db.sql

将此类脚本重新加载到名为newdb的(新创建的)数据库中

$ psql -d newdb -f db.sql

将数据库转储到自定义格式的存档文件中:

$ pg_dump -Fc mydb > db.dump

将数据库转储到目录格式存档中:

$ pg_dump -Fd mydb -f dumpdir

将存档文件重新加载到名为newdb的(新创建的)数据库中:

$ pg_restore -d newdb db.dump

来自pg_restore文档:

实施例

假设我们已将名为mydb的数据库转储到自定义格式的转储文件中:

$ pg_dump -Fc mydb > db.dump

删除数据库并从转储中重新创建它:

$ dropdb mydb
$ pg_restore -C -d postgres db.dump

答案 1 :(得分:15)

上面的答案对我不起作用,这有效:

psql db_development < postgres_db.dump

答案 2 :(得分:6)

对我来说,它就像这样工作。 C:\ Program Files \ PostgreSQL \ 12 \ bin> psql -U postgres -p 5432 -d虚拟-f C:\ Users \ Downloads \ d2cm_test.sql

答案 3 :(得分:2)

对于我来说,当我尝试转储到我使用过的远程主机时

psql -U username -p 5432 -h 10.10.10.1 -d database < db.dump

工作正常。如果不是远程的,那么只需执行以下命令即可。

psql -d database < db.dump

答案 4 :(得分:0)

如果您有完整的数据库转储:

PGPASSWORD="your_pass" psql -h "your_host" -U "your_user" -d "your_database" -f backup.sql

但是,如果您将模式分别保存,则将无法使用。然后,您需要禁用数据插入触发器,类似于pg_restore --disable-triggers。然后,您可以使用以下代码:

cat database_data_only.gzip | gunzip | PGPASSWORD="your_pass" psql -h "your_host" -U root "your_database" -c 'SET session_replication_role = replica;' -f /dev/stdin

另一方面,我认为这是postgres的非常不幸的缺点。在pg_dump中创建转储的默认方式与pg_restore不兼容。但是,有了一些附加键。 WTF?

答案 5 :(得分:0)

要使用与pg_dump兼容的pg_restore创建备份,必须在创建转储时使用--format=custom / -Fc

从文档中

  

输出适合输入到pg_restore的自定义格式的归档文件。

因此,您的pg_dump命令可能类似于:

pg_dump --file /tmp/db.dump --format=custom --host localhost --dbname my-source-database --username my-username --password

还有您的pg_restore命令:

pg_restore --verbose --clean --no-acl --no-owner --host localhost --dbname my-destination-database /tmp/db.dump

答案 6 :(得分:-1)

如果您将pg_dump与-Fp一起使用以纯文本格式进行备份,请使用以下命令:

{all imports}


export default class SelectACDState extends Component {
  showACDState = (itemValue, Bcolor) => {
    this.setState({});
    global.BColor = Bcolor;
    global.ACDState = itemValue;
    this.setState({});
  };

  setACDState = (itemValue, itemIndex) => {
    AsyncStorage.setItem("ACDState", itemValue);
    this.setState({});
    global.ACDState = itemValue;
    this.showACDState(itemValue);
  };

  onPress = () => {
    this.props.onPressItem(this.props.id);
  };
  render() {
    const { goBack } = this.props.navigation;

    return (
      <View style={styles.padding2}>
        <FlatList
          data={[
            { key: `${MLT.t("Abgemeldet")}`, Bcolor: "#FFFFFF" },
            { key: `${MLT.t("Anwesend")}`, Bcolor: "#FFFFAE" },
            { key: `${MLT.t("ACD")}`, Bcolor: "#7BEC36" },
            { key: `${MLT.t("Nachb")}`, Bcolor: "#c8f4b5" },
            { key: `${MLT.t("Pause")}`, Bcolor: "#FAA46B" }
          ]}
          renderItem={({ item }) => (
            <View
              style={{
                backgroundColor: item.Bcolor,
                borderWidth: 1,
                height: 50,
                borderColor: "black"
              }}
            >
              <TouchableOpacity
                onPress={() => {
                  this.showACDState(item.key, item.Bcolor);
                  goBack();
                }}
              >
                <Text
                  style={[
                    styles.rowText,
                    (style = { fontSize: 30, alignSelf: "center" })
                  ]}
                >
                  {item.key}
                </Text>
              </TouchableOpacity>
            </View>
          )}
        />
      </View>
    );
  }
}

将所有数据复制到名称为dbname的数据库