Wow, Davide. That *is* shooting mosquitos with cannons, but it turns out to be extremely cool! :-)
I'm certain that someone will cook up some fancy tricks with this new functionality! Thanks a lot! On Aug 30, 2007, at 1:11 PM, Davide Alberani wrote: > Look ma'... another overkill solution of mine! ;-) > > In the CVS there's the first support for custom queries running > the imdbpy2sql.py script. > It can be used to convert a whole database to InnoDB after it > was created as MyISAM (and much more, obviously). > > Beware that it's mostly untested so if you can try it! > > In the documentation I've added - in my funny English - these > notes and instructions: > > [MySQL InnoDB] > InnoDB is abysmal slow for our purposes: my suggestion is to always > use MyISAM tables and - if you really want to use InnoDB - convert > the tables later. > The imdbpy2sql.py script provides a simple way to manage this case, > see ADVANCED FEATURES below. > Anyway, if you really need to use InnoDB, in the server-side settings > I recommend to set innodb_file_per_table to "true". > > Beware that the conversion will be extremely slow (some hours), but > still faster then using InnoDB from the begin. > > > ADVANCED FEATURES > ================= > > With the -e (of --execute) command line argument you can specify > custom queries to be executed at certain times, with the syntax: > -e "TIME:[OPTIONAL_MODIFIER:]QUERY" > > Where TIME is actually one of these: 'BEGIN', 'BEFORE_DROP', > 'BEFORE_CREATE', > 'AFTER_CREATE', 'BEFORE_MOVIES', 'BEFORE_CAST', 'BEFORE_RESTORE', > 'BEFORE_INDEXES' and 'END'. > > The only available OPTIONAL_MODIFIER is 'FOR_EVERY_TABLE' and it > means that the QUERY command will be executed for every table in the > database (so it doesn't makes much sense to use it with BEGIN, > BEFORE_DROP > or BEFORE_CREATE time...), replacing the "%(table)s" text in the QUERY > with the appropriate table name. > > You can specify so many -e arguments as you need, even if they > refers to the same TIME: they will be executed from the first to > the last. > Also, always remember to correctly escape queries: after all you're > passing it on the command line! > > E.g. (ok, quite a silly example...): > -e "AFTER_CREATE:SELECT * FROM title;" > > The most useful case is when you want to convert the tables of a MySQL > from MyISAM to InnoDB: > -e "END:FOR_EVERY_TABLE:ALTER TABLE %(table)s ENGINE=InnoDB;" > > If your system uses InnoDB by default, you can trick it with: > -e "AFTER_CREATE:FOR_EVERY_TABLE:ALTER TABLE %(table)s > ENGINE=MyISAM;" -e "END:FOR_EVERY_TABLE:ALTER TABLE %(table)s > ENGINE=InnoDB;" > > Cool, uh? > > > > > -- > Davide Alberani <[EMAIL PROTECTED]> [PGP KeyID: 0x465BFD47] > http://erlug.linux.it/~da/ > > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a > browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > Imdbpy-devel mailing list > Imdbpy-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/imdbpy-devel -- Jesper Noehr [EMAIL PROTECTED] ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Imdbpy-devel mailing list Imdbpy-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/imdbpy-devel