通过ssh将数据库从mysql迁移到postgres

时间:2018-04-21 21:03:43

标签: mysql bash postgresql ssh

我有一个家庭作业问题,我不能这样做,所以我要求一些帮助。

家庭作业是构建一个脚本,通过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剂量似乎工作,因为脚本显示错误与这些兼容的错误,或者是否有更好/更清晰的方法来构建脚本。

很抱歉,如果这是一个奇怪或低级别的问题,仍在学习。

1 个答案:

答案 0 :(得分:0)

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

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

所以管道毫无意义。

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

第三,我对--compatible标志仍然导致错误并不感到惊讶。首先,我认为没有任何单一格式的SQL可以与每个PostgreSQL版本兼容。我还期望它是一个“尽力而为”的旗帜,处理一些常见的已知破损,但并非所有可能的不兼容性。