我有一个家庭作业问题,我做不到,所以我请求一些帮助。
作业是构建一个脚本,通过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似乎在脚本显示错误时起作用,比如这些兼容的错误,或者是否有更好/更干净的方法来构建脚本。
抱歉,如果这是一个奇怪或低水平的问题,仍然学习这个。
1条答案
按热度按时间9o685dep1#
第一,
>
将命令的标准输出发送到文件。|
将标准输出从一个命令发送到另一个命令。它们是互斥的,文件重定向“wins”:所以管道是没有意义的。
第二,你在说
psql
转储数据库,而不是导入它。扔掉那些垃圾dump
关键字,你至少应该更进一步。第三,我不感到惊讶
--compatible
标志仍导致错误。首先,我不认为有任何单一的sql格式可以与每个postgresql版本兼容。我还希望它是一个非常“尽力而为”的标志,处理一些常见的已知故障,但不是所有可能的不兼容。