2011-06-15 59 views
0

我與該第一行標籤標題上也製表符分隔,例如製表符分隔文本文件:創建數據庫表標籤

Name ID Money 
Tom 239482 $2093984 
Barry 293984 $92938 

唯一的問題是,有30列,而不是3,所以我寧願不必輸入所有的(名稱VARCHAR(50),...),如果它是可以避免的。

我該如何去寫一個函數,在php中從頭開始創建表格,並且說函數需要$ file_path和$ table_name?我是否必須再次寫出所有列名稱,告訴mysql它們是什麼類型,並且刪除頂部,或者當名稱已經存在時,是否有更優雅的解決方案?

+0

感謝大家,至少我還沒有用Google搜索簡單的解決方案;我開始爲它編寫一個解析器,並且在大約10個正則表達式中,我意識到只需輸入它就可以更好地利用時間。 – NorthGuard 2011-06-15 17:42:01

回答

1

你會不知何故需要將列類型映射到文件中的列。你可以通過將這些數據添加到你的文本文件來做到這一點。例如

Name|varchar(32) ID|int(8) Money|int(10) 
Tom 239482 $2093984 
Barry 293984 $92938 

或類似的東西。然後使用第一行和數據寫一個函數thet get的列名和列類型,以使用所有其他行填充表。您可能還想添加一種方法來命名給定的表格等。但是,這可能與使用您的文本文件創建SQL查詢一樣多(如果不是更多)。在頂部添加創建表聲明,併爲每行添加插入聲明。隨着搜索和替換,這可以做得非常快。

1

即使你可以找到一種方法來做到這一點,你會如何確定列類型?我想有一些方式來確定列的類型,通過檢查某些屬性(int,string等)。然後你需要處理像Money這樣的奇怪列,因爲美元符號可能被視爲一個字符串,但幾乎肯定應該存儲爲整數。

除非你打算使用這個功能,否則我不會花費時間來拼湊它。只是胖手指創建表。 (Ctrl-C,Ctrl-V是你的朋友)