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

olqngx59  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(487)

我有一个家庭作业问题,我做不到,所以我请求一些帮助。
作业是构建一个脚本,通过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似乎在脚本显示错误时起作用,比如这些兼容的错误,或者是否有更好/更干净的方法来构建脚本。
抱歉,如果这是一个奇怪或低水平的问题,仍然学习这个。

9o685dep

9o685dep1#

第一, > 将命令的标准输出发送到文件。 | 将标准输出从一个命令发送到另一个命令。它们是互斥的,文件重定向“wins”:

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

所以管道是没有意义的。
第二,你在说 psql 转储数据库,而不是导入它。扔掉那些垃圾 dump 关键字,你至少应该更进一步。
第三,我不感到惊讶 --compatible 标志仍导致错误。首先,我不认为有任何单一的sql格式可以与每个postgresql版本兼容。我还希望它是一个非常“尽力而为”的标志,处理一些常见的已知故障,但不是所有可能的不兼容。

相关问题