出于测试目的,我想将数据库中的数据量加倍。
除了循环遍历表格模式之外,是否有更好的方法论方法:
select table_name from information_schema.tables where table_schema='<database_name>';
对于结果中的table_name:
explain <database_name>.<table_name>;
基于表
在python中创建对象 select * from <table_name>;
将数据存入我们创建的对象
将对象主键(GUID)更改为新的guid,如果该主键存在于其他对象中的任何其他位置,则将其更改为相同的guid
将新数据插入数据库。
预期结果: 这会使我在数据库中拥有的对象数量翻倍。
答案 0 :(得分:1)
您不需要在Python中创建对象。您可以将表中的数据重新插入到自身中:
public partial class Form1 : Form
{
GameEngine engine;
public Form1()
{
InitializeComponent();
engine = new GameEngine();
engine.repaintRequired += engine_repaintRequired;
engine.update();
}
private void engine_repaintRequired(object sender, EventArgs e)
{
repaint();
}
public void repaint()
{
Console.Write("repaint");
}
}
class GameEngine
{
public event EventHandler repaintRequired;
public void update()
{
onRepaintRequired();
}
private void onRepaintRequired()
{
if (repaintRequired != null)
repaintRequired(this, new EventArgs());
}
}
这假设没有列是标识列(可能是一个错误的假设)。因此,您需要列出列:
insert into t
select t.*
from t;
不要包含标识列。让它获得默认值。如果未设置标识,则可能需要执行以下操作:
insert into t(col1, col2, . . .)
select col1, col2, . . .
from t;
对于UUID,您将使用函数生成新密钥。
但是,没有必要将数据移出数据库以进行此操作。