2017-03-15 91 views
0

如何創建列表名稱爲monthNumbers從2000年至截止日期的Mysql表格。如何使用月份名稱從2000年創建Mysql表格

如:

CREATE TABLE abc_horizontal 
    (PRIMARY KEY (a_fips), 
    a_fips INT(7), 
    val_200001 DEC(8,4), 
    val_200002 DEC(8,4), 
    val_200003 DEC(8,4), 
    val_200004 DEC(8,4), upto 201703 ? 

是否有產生使用python腳本從2000年這些val_yyyymm直到當月較短的方法嗎?

+1

壞表的設計... MySQL有每桌4096列的硬性限制,但有效的最大可能對於給定的table.read https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html –

+0

一些biz邏輯需要水平表創建,不知道如果MySQL是明智的選擇以及。也許一個柱狀數據庫更好 – Viv

回答

1

Omg有這麼多種方法!下面有一個...

print("\n".join([ 
    "CREATE TABLE abc_horizontal", 
    "(PRIMARY KEY (a_fips)", 
    ", a_fips INT(7)", 
    "\n".join([ 
     ", val_20%02d%02d DEC(8,4)"%(x,y+1) 
     for x in range(18) 
     for y in range(12) 
     if not (x == 17 and y >= 04) 
    ]), 
    ");" 
])) 

你可能真正想要的是這樣的事情雖然

CREATE TABLE abc_horizontal (
    PRIMARY KEY (a_fips, reporting_date), 
    a_fips INT(7), 
    reporting_date CHAR(6), 
    value DEC(8,4) 
); 
+0

在第二個創建表是你建議一個垂直表而不是水平? – Viv

+0

這將是標準。它並不像'正常化'那麼「垂直」 – gbtimmon

相關問題