我處於這種情況,我的客戶通過電子郵件向我發送了一個包含50列數據的excel文件,這些數據非常規範化。然後我將它導出到CSV並上傳到MySQL - 單個表中。這些色譜柱適用於不同的成分(每種成分的10列數據 - 標題,類別等),然後是40種不同的色譜柱,以獲得每種成分的特徵。因此,表格中的每種成分都具有這50列,即使每列不適用於該成分。SQL僅返回行中沒有空列作爲新行
我的問題是,如果我可以創建一個SQL,只選擇一個選定的成分的填充特徵,並留下所有其他列?我知道另一個選擇是建立我自己的CSV解析器,它創建了多個表,然後爲它們編寫SQL,但我想調查解決這個問題,如果這不可行,那麼我只需要面對這一點,建立一個解析器; P)
這是據我來到但這並不完全排除未填寫欄(或包含「巾幗不讓鬚眉」
SELECT
IF(`Heving-vanlig-gjaerbakst` <> '' AND `Heving-vanlig-gjaerbakst` <> 'nei', `Heving-vanlig-gjaerbakst`, 'random') AS `test1`,
IF(`Frys-kort` <> '' AND `Frys-kort` <> 'nei', `Frys-kort`, 'random') AS `test2`
... and for the 38 other rows ...
FROM x
WHERE id = 123
我寧願沒有在PHP代碼中通過跳過空行解決這個問題= P
示例行(列名稱第一位):
g1 gruppe ug1 undergruppe artnr artikkel beskrivelse status enhet ansvar prisliste Heving-vanlig-gjaerbakst Heving-soete-deiger Deig-stabilitet Smaksgiver Saftighet Krumme-poring Skorpe Volum Konservering Skjaerbarhet Frys-lang Frys-kort Kjoel Holdbarhet E-fri Azo-fri Mandler Aprikoskjerner Helmiks Halvmiks Base Konsentrat Utstrykning Bakefasthet Frukt-Baerinnhold Slippegenskaper Hindre-koksing Palmefri Fritering Smidighet Baking Kreming Roere Fylning Dekor Prefert Viskositet Cacaoinnhold Fet-innhold
100150 Bakehjelpemidler 100150200 Fiber/potetprodukter 10085 Potetflakes sekk 15 kg Egnet til lomper, lefser, brød og annet bakverk. B... Handel Sekk Trond Olsen JA xxx xxx xxx
正如您所見,大多數列都是空的。 X,XX和XXX是分級系統的一種形式,但對於某些列而言,內容是「是」或「否」。
正如我所說的,前10列是關於該產品的信息,另外40列是不同的特徵(並且這是我想爲一個給定產品工作的那些)。
是否有某種方法來分類成分,知道應該應用哪些色譜柱?說,粘度,(如何「迅速」的液體流動)哪(可能)不適用於麪粉。這將改變你的數據庫的設計方式,最終的目的地。您將_probably_能夠完成SQL方面的所有工作,但我會推薦向您的導入表添加一個自動增量鍵(否則它應該與傳遞的文件相同)。 – 2012-01-12 16:39:19