2014-05-20 25 views
-1

我有一个很大的数据库我想分割它,这个大型数据库有一列,每行都是出价或现在购买。我想把这个表分成两个表,我正在考虑做一个SQL语句,例如INSERT INTO newtable WHERE row [5] ='bid'。但经过一番调查后,我发现插入声明中没有声明。真的吗?如果不是,我该如何拆分这个数据库? (使用python2 btw)在Python中插入和放置mysql语句

回答

1

你为什么不先把每个组的SELECT先循环通过结果和INSERT呢?

根据我们在聊天对话,你可以做这样的事情:

all = "SELECT * FROM listings1 WHERE auctionType IN ('Bid', 'BuyNow')" 
cursor.execute(all) 
results = cursor.fetchall() 
for row in results: 
    if row['auctionType'] == 'Bid': 
     #do your insert here 
     insert = "INSERT INTO listings1() VALUES (domainName, itemID)" % (row['domainName'], row['itemID'] etc etc) 
     cursor.execute(insert) 
    elif row['auctionType'] == 'BuyNow': 
     #other insert here 

另外请注意,你的mysql库的问题。你想把结果作为字典返回。看到这个答案的详细信息:https://stackoverflow.com/a/8623947/1086938

+0

这似乎是可行的,但这一行是从“bigtable”所以我需要事先定义行,不知道如何。 – Coder77

+0

@ Coder77请参阅编辑。像这样的东西应该工作。 – hanleyhansen

+0

行[5]应该是什么? – Coder77

1

插入语句现在有WHERE子句,但INSERT INTO SELECT statementINSERT INTO newtable (...) SELECT ... FROM oldtable WHERE column = 'bid'

+0

不确定我放在'..'位。 – Coder77

+0

列名列表:'INSERT INTO newtable(column1,column2,column3)SELECT column1,column2,column3 FROM oldtable WHERE column ='bid';'。请注意'INSERT'和'SELECT'中的列数应该相等。 –

0

不知道,也许我误解的问题...但你不能用INSERT使用WHERE 。 WHERE仅用于帮助指定要在查询中抓取或更改哪些行。

如果您想要做的是抓取表中具有特定列的X值的所有条目(例如行[5]的'bid'),然后在其他地方插入自己的表中,则可以执行在SELECT语句上循环来获取所有这些值与WHERE行[5] ='bid'。 (SELECT * FROM currenttable WHERE row [5] ='bid')。在一个while循环中,你可以在INSERT INTO newtable(column,column,column)VALUES(value,value,value)中替换该表的所有列/值的列/值。

一旦完成并确认新表具有合适的值,您可以从原始表中删除/删除所有不必要的条目(DELETE FROM currenttable WHERE row [5] ='bid'),因此您已拆分你的桌子。