2

I have multiple MySQL tables with names of the form "Shard_0", "Shard_1", "Shard_2" ... "Shard_n" All of them have identical table structure. They all live in the same database.

Say I want to add a column to all those tables. Is there a way to do that programmatically?

Something like:

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

Is it possible to do something like that? If so what language and/or library do I need?

Thanks

4

3 回答 3

4

没问题。Python 有几个第三方库可以连接到数据库。但是,如果您只需要这样做一次,最简单的方法是使用 python 脚本将 SQL 指令写入标准输出:

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

然后像这样从 CLI 调用它:

./sqlgenscript.py | mysql -u username -p
于 2010-10-27T06:50:31.470 回答
1

是的,它可能,您可以使用 Python 的 MySqlDb 模块并编写类似于 sql 查询的查询并执行它们以更新表。看看这个: http: //mysql-python.sourceforge.net/MySQLdb.html

于 2010-10-27T08:40:13.687 回答
0

我认为您可以创建一个带有一个参数的例程,并将“i”作为参数发送给您的例程。然后你可以调用你的例程。

打电话testMy_Alter(一世);

其中 i=1,2,3,...

于 2010-10-27T07:10:07.687 回答