繁体   English   中英

用于在Rackspace中移动大型数据库的脚本-Perl

[英]Script for a for moving a large database in Rackspace - Perl

我没有Perl的经验。 我们正在尝试使用计划为Cron Job的Perl脚本将250MB数据库移动到MySQL中。Rackspace云建议使用以下脚本:

 #!/bin/sh mysql -h DB_HOST -u DB_USER -p'DB_PASSWORD' DB_NAME < /path/to/file/db_import.sql 

我已经填写了变量(本文的用户和密码已更改):

!/ bin / sh mysql -h mysql51-032.wc1:3306 -u 806637_Admin -p' ******* '806637_Vs_Hl </mnt/stor09-wc1-ord1/762283/806637/www.vs-hl。 COM / Vs的-hlDB / Vs的-DB.sql

经过一些研究,我发现“#”在Perl中开始注释,因此我将其删除,这是我收到的错误报告:

在“ main.pl”第1行中“ / bin / sh”附近找到了期望的运算符(在h之前缺少运算符?)

在“ 806637_VMHAdmin”附近的main.pl第1行上找到期望的运算符的位置(在VMHAdmin之前缺少运算符?)

在main.pl第1行的“'Admin1234'806637_”附近找到操作员所期望的编号(806637_之前缺少操作员?)

在“ 806637_Vets_Hall”附近的main.pl第1行中找到期望的运算符(在Vets_Hall之前缺少运算符?)

main.pl第1行中的语法错误,靠近“ / bin / sh mysql”

由于编译错误,main.pl的执行中止。

我的问题是我在语法上做错了什么? 谢谢阅读!

那不是Perl脚本,那是Bourne Shell脚本。 只需将其移动到两条单独的线上即可。

#!/bin/sh
mysql ...

注意#! 必须是文件的前两个字符。 没有空行可以继续。

Perl的“脚本”和shell脚本是不一样的。 因此,在与程序员打交道时,我将其称为“ Perl程序”,因为Perl是一种功能齐全的编程语言。 这是一个shell脚本,它使用2行分隔:

#!/bin/sh
mysql ...

这与Perl无关。 如果要在Perl中执行命令,则可以在Perl程序中执行此操作。 我称它为doit.pl:

# Note I'm using backticks, and any error msgs are in $msg. 
$msg=`mysql -h DB_HOST -u DB_USER -p'DB_PASSWORD' DB_NAME < /path/to/file/db_import.sql`;
print "Messages are: $msg\n";

如果命令行中没有任何变化,则不需要Perl。 如果您正在遍历并复制许多数据库名称,则可以使用Perl。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM