2010-10-27 2 views
2

У меня есть несколько таблиц MySQL с именами формы "Shard_0", "Shard_1", "Shard_2" ... "Shard_n" Все они имеют идентичную структуру таблицы. Все они живут в одной базе данных.Возможно ли программно ALTER несколько таблиц MySQL?

Скажем, я хочу добавить столбец ко всем этим таблицам. Есть ли способ сделать это программно?

Что-то вроде:

# pseudo code  
for i in range(n): 
    tablename = "shard_"+str(i) 
    ALTER TABLE tablename ... 

Можно ли сделать что-то подобное? Если да, то какой язык и/или библиотека мне нужны?

Thanks

ответ

4

Нет проблем. У Python есть несколько сторонних библиотек для подключения к db. Но самый простой подход, если вам нужно сделать это всего за один раз будет питон скрипт, который пишет инструкции SQL только на стандартный вывод:

for i in range(n): 
    tablename = "shard_"+str(i) 
    print 'ALTER TABLE tablename ...' 

Тогда просто вызов из CLI, как это:

./sqlgenscript.py | mysql -u username -p 
0

Я думаю, вы можете создать рутину, которая принимает один аргумент, и отправить «i» в качестве аргумента вашей подпрограммы. Затем вы можете назвать свою рутину.

Звоните test. My_Alter (i);

где я = 1,2,3, ...

1

Да его возможно, вы можете использовать модуль MySQLDb для питона и писать запросы, похожие на SQL запросов и выполнять их для обновления таблиц. Посмотрите на это: http://mysql-python.sourceforge.net/MySQLdb.html

Смежные вопросы