2015-02-23 15 views
0

我有以下脚本读取员工ID从Employee表中分配给员工的每一个数据库,并改变了EmployeeLedger_ $ EMPID表中相应的数据库在shell脚本在MySQL使用concat函数

cls_ip="localhost"; 

mysql="mysql -h $cls_ip -u root" 
list=`echo "show databases like '$dbPattern'" | $mysql| grep -v Database` 

for db in $list 
do 
    echo "altering EmployeeLedger table for database $db"; 
    ${mysql} ${db} -e "use $db"; 
    empId=`${mysql} ${db} -e "select EMPID from Employee"`; 
    echo "$empId"; 
    ${mysql} ${db} -e "alter table concat('EmpTimeLedger',$empId) add column HOLIDAY tinyint(1) not null default 1;"; 
done 

这里我没有成功将雇员表与EmplyeeLedger进行连接,以构成EmployeeLedger_ $ empId表。我该怎么做?

+1

为什么不'你只是这样做'empId =“EmpTimeLedger_ $ empId”;'然后'“ALTER TABLE $ empId ADD COLUMN ...”'? – Cyclonecode 2015-02-23 14:03:32

+1

@Cyclone这是一个伎俩!谢谢 – 2015-02-23 17:00:52

+0

不客气,太糟糕了我没有添加它作为答案=) – Cyclonecode 2015-02-23 17:05:38

回答

1

我认为这样做最简单的方法是简单地串联了empId你的表的名称:

table="EmpTimeLedger_$empId"; 

那么你会改变你的表是这样的:

ALTER TABLE $table 
ADD COLUMN HOLIDAY TINYINT(1) NOT NULL DEFAULT 1; 
0

你为什么不尝试手动字符串连接这样

富= “EmpTimeLedger” 富+ = $ EMPID

$ {mysql的} $ {DB} -e“改变表$ foo的加列HOLIDAY TINYINT (1)not null default 1;“