mysql 如何为一年中的每一天插入15分钟的时段

cvxl0en2  于 2023-01-25  发布在  Mysql
关注(0)|答案(1)|浏览(97)

我试图创建一个数据库thta反映一个可定制的库存水平,每15分钟的窗口,为一整年。
我的数据库结构如下所示:
| 时间_周期|日|月|股票|
| - ------|- ------|- ------|- ------|
| 00点整|1个|1个|二十个|
| 00时15分|1个|1个|十五|
| - -|...|...|...|
| 二十三点四十五分|1个|1个|无|
| 00点整|第二章|1个|二十个|
| - -|...|...|...|
| 二十三点四十五分|三十一|十二|无|
因此,在这个要插入的表中总共有96 * 366 = 35,136行,time_period在一年中的266天中每15分钟递增一次(每天96个插槽)。
有没有什么方法可以使用mySQL查询或循环轻松地插入这些数据?
到目前为止,我想到的最好的选择是手动将数据生成到JSON或CSV文件中,然后导入到DB FROM FILE中--不过,似乎应该有更简单的方法来做到这一点?
编辑:尝试按照评论者的建议使用递归公共表表达式。我的数据库运行的是mySQL5.7,因此很遗憾这不是一个选项

ru9i0ody

ru9i0ody1#

编写一个只在循环中插入35,040行的脚本会更快、更容易:

import datetime
import mysql.connector

cnx = mysql.connector.connect(user='root', password='xxxxxxxx', database='test')
cursor = cnx.cursor(prepared=True)

stmt = """INSERT INTO MyTable SET t = %s"""

time = datetime.datetime(2023, 1, 1, 0, 0, 0)
end = datetime.datetime(2024, 1, 1, 0, 0, 0)

while time < end:
    cursor.execute(stmt, (time,))
    time += datetime.timedelta(minutes=15)

cnx.commit()

相关问题