我对MySQL还是很陌生,所以如果这是一个直观的问题,我深表歉意,在stackoverflow中我找不到任何有用的东西。我目前在一行中有相当数量的财务数据,每个值都用逗号分隔。 12个值等于一组数据,因此我想在每12个值之后创建一个新行。
换句话说,我拥有的数据如下所示: (开盘时间,开盘价,高点,低点,收盘价,成交量,成交时间,quotevol,交易,ignore1,ignore2,ignore3,...重复...)
我希望它看起来像:
行1 :(开盘时间,开盘价,高,低,收盘价,成交量,收盘时间,报价量,交易量,忽略1,忽略2,忽略3) 第2行:(open_time2,open2,high2,low2,close2,volume2,close_time2,quotevol2,trades2,ignore4,ignore5,ignore6)
第3行: ...
数据已经是一个.sql文件,如果有区别,我也将其放在表中。 要澄清的是,它所在的表只有一行和一列。
答案 0 :(得分:0)
我毫不怀疑在MySQL中可以做到这一点,但是我可以通过将记录导出为.CSV来实现。
使用CSV模块编写一个简单的python脚本,并使用逗号作为分隔符将每x个字段移至新行。之后,您可以将其重新导入到MySQL中。
答案 1 :(得分:0)
如果我的理解正确,您想执行以下操作:
我在Python中进行此操作的方式是:
代码:
import mysql
import pandas as pd
query = '''this is your sql statement that returns everything into the first row of the first column in your query results'''
cnx = mysql.connector.connect('''enter relevant connection information here: user, password, host, and database''')
mycursor = cnx.cursor()
mycursor.execute(query)
tup = tuple(mycursor.fetchall()[0])
text = str(tup[0])
ls = text.split(',') # converts text into list of items
n = 12
rows = [ls[i:i + n] for i in range(0, len(ls), n)]
data = []
for row in rows:
data.append(tuple(row))
labels = ['open_time','open','high','low','close','volume','close_time','quotevol','trades','ignore1','ignore2','ignore3']
df = pd.DataFrame.from_records(data, columns=labels)
print(df)
列表理解代码取自this。您没有确切指定所需的结果数据集的方式,但是pandas数据框应具有每一行。
没有实际的字符串或数据集,我无法确认这是否完全可行。您能给我们一个Minimal, Complete, and Verifiable example吗?