John, you are my father! I've taken your script and tweaked it a bit more:
------------------------ SNIP --------------------- #!/bin/sh DBLIST="mydb1 mydb2 mytest mytestdb" USER="uzer" PASSWORD="passwerd" clear for DB in $DBLIST do echo "Removing all indexes (not primary) in Database: '$DB'" TABLES=$(mysql -u$USER -p$PASSWORD --force -e "SHOW TABLES FROM $DB" \ | awk '{if(NR>1) print $1;}') for t in $TABLES; do echo -e "\tFixing: '$t'" echo "SHOW INDEX FROM $t" \ | mysql -u$USER -p$PASSWORD --force $DB \ | awk '{if($3 !~ /Key_name/ && $3 !~ /PRIMARY/) print $1" "$3}' \ | awk '{print "ALTER TABLE "$1" DROP INDEX "$2";"}' \ | mysql -u$USER -p$PASSWORD --force $DB done done > -----Original Message----- > From: John Thorpe [mailto:[EMAIL PROTECTED] > Sent: Tuesday, March 30, 2004 1:49 PM > To: Daevid Vincent > Cc: [EMAIL PROTECTED] > Subject: Re: Drop all keys / indexes on a table? > > I've been using comand line piping through awk to handle > mass tables modifications and listings. E.g. in your case > something like the following would hit every index, except > the primary keys, in table tablename in the test database. > > echo "show index from tablename" | > | mysql -uuser -ppswd test > | awk '{if($3 !~ /Key_name/ && $3 !~ /PRIMARY/) print $1" "$3}' > | awk '{print "alter table "$1" drop index "$2";"}' > | mysql -uuser -ppswd test > > To hit every table in the test database: > > mysql -uuser -ppswd -e "show tables from test" > | awk '{if(NR>1) print "show index from "$1";"}' > | mysql -uuser -ppswd test > | awk '{if($3 !~ /Key_name/ && $3 !~ /PRIMARY/) print $1" "$3}' > | awk '{print "alter table "$1" drop index "$2";"}' > | mysql -uuser -ppswd test > > John -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]