有一個需求,比如客戶上傳以前的excel表格或者csv檔案,匯入使用者表,是使用者資訊,包括以下列:暱稱,城市,生日,訂單號,手機號等,
但在我們的系統中,現有的使用者表的欄位只有暱稱,城市等,沒有生日,訂單號,手機號等欄位。
能否讓客戶上傳檔案時,讀取表格檔案並建立一張表,儲存本來使用者表中沒有的欄位資訊?
或是把本來沒有的欄位資訊序列化後存入原使用者表中的一個特定欄位?在前台呈現時,格式化這個特定欄位並顯示?
哪種可行性更高呢,或是有其他辦法?
回複內容:
有一個需求,比如客戶上傳以前的excel表格或者csv檔案,匯入使用者表,是使用者資訊,包括以下列:暱稱,城市,生日,訂單號,手機號等,
但在我們的系統中,現有的使用者表的欄位只有暱稱,城市等,沒有生日,訂單號,手機號等欄位。
能否讓客戶上傳檔案時,讀取表格檔案並建立一張表,儲存本來使用者表中沒有的欄位資訊?
或是把本來沒有的欄位資訊序列化後存入原使用者表中的一個特定欄位?在前台呈現時,格式化這個特定欄位並顯示?
哪種可行性更高呢,或是有其他辦法?
如果自訂的欄位沒有排序,檢索方面的需求,還是建議用大欄位吧,把非標準欄位的資料全部以JSON或數組序列化的格式存到一個大欄位中,需要展示的時候再做格式化輸出就好了。
如果有排序或檢索需求,則可能需要結合一些開源的索引軟體比如Apache Lucene來實現了,看具體需求吧。
還有另外一種方式,代碼邏輯上可能稍微複雜一點,儲存效率也會很低,其實不大建議,但是如果你不是海量資料的話,問題也不大。方法就是建立一張欄位足夠多的表(user_data),欄位命名都採用通用命名方式比如“column1,column2“等,然後專門建立一個表做使用者的資料欄位對應(user_data_columns),格式如下:
| uid | name | field |
| 101 | 生日 | column1 |
| 101 | 手機號 | column5 |
需要使用的時候,先到user_data_columns表中把相應的欄位名和表的欄位讀取出來,然後到user_data表中去取相應列的資料。