【问题标题】:Migrate database from mysql to postgres via ssh通过 ssh 将数据库从 mysql 迁移到 postgres
【发布时间】:2018-10-02 06:22:42
【问题描述】:

我有一个家庭作业问题,我无法完成,所以我请求一些帮助。

作业是构建一个脚本,通过 ssh 将数据库从本地 sql 发送到 postgresql 到虚拟机上。

 #!/bin/bash
DATABASE=$1
mysqldump -u root -p'xxxxx' --compatible=postgresql  $DATABASE > Migration.sql | ssh root@xxx.xxx.xx.x psql --username=postgres dump < Migration.sql

这是我最近的一次。

当我检查某些内容是否已更改时,它会在 postgresql 中生成一些内容(至少构建一些数据库),但是在我执行脚本的终端中,它会列出一堆错误(这看起来应该是用--compatible=postgresql 修复了很多语法错误"unlock 字。

知道为什么--compatible=postgresql dosent 似乎可以工作,因为脚本会显示带有这些兼容错误的错误,或者是否有更好/更简洁的方法来构建脚本。

对不起,如果这是一个奇怪或低级的问题,还在学习这个。

【问题讨论】:

    标签: mysql bash postgresql ssh


    【解决方案1】:

    首先,&gt; 将命令的标准输出发送到文件。 | 将标准输出从一个命令发送到另一个命令。这些是互斥的,文件重定向“获胜”:

    $ echo foo > foo.txt | cat
    $ cat foo.txt 
    foo
    

    所以管道是没有意义的。

    其次,您告诉psql 转储数据库,而不是导入它。去掉 dump 关键字,你至少应该更进一步。

    第三,--compatible 标志仍然导致错误我并不感到惊讶。一方面,我认为没有任何单一格式的 SQL 可以与每个 PostgreSQL 版本兼容。我也希望它是一个非常“尽力而为”的标志,可以处理一些常见的已知损坏,但不是所有可以想象的不兼容问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 2016-02-29
      • 2013-04-17
      • 1970-01-01
      • 2014-11-13
      • 2018-11-26
      相关资源
      最近更新 更多