台灣最大程式設計社群網站
線上人數
1719
 
會員總數:243287
討論主題:188072
歡迎您免費加入會員
討論區列表 >> MySQL >> Mysql 匯出CSV檔,如何增加欄位名稱
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Mysql 匯出CSV檔,如何增加欄位名稱
價值 : 30 QP  點閱數:555 回應數:6

樓主

JACK
門外漢
0 14
279 30
發送站內信

請教各位高手,想在PHP內匯出MYSQL的資料,內容可以匯出成CSV檔沒問題。想要在第一行有欄位名稱,不知該下哪個指令。(因欄位有幾十個),懇請各位幫忙^_^

目前在PHP下的匯出指令為
mysql_query("SELECT * table
INTO OUTFILE 'table.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n'
") or die(mysql_error());


搜尋相關Tags的文章: [ 匯出欄位名稱 ] , [ INTO OUTFILE ] , [ 匯出CSV ] ,
本篇文章發表於2018-01-20 08:41
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
一般需要分成兩個方式來做輸出。
如果要用mysql命令的話。是需要用如下的方式

不過這樣的命令,在某些空間主機上是不允許給你使用的。
但你剛好有說到你是要用php。所以可以利用php的mysql_fetch_field函數來先獲取欄位名稱。
不過要記得,此為mysql使用的函數名稱。在php7因該不會支援。你得找pdo相關去處理了。

也就是說,你可以先用你的方式,先獲取你要的資料之後,再用上面的方式再給他加進去就行了。
至於是否可以用一個命令處理。其實也並非不是不能。但難度太高。
畢竟我們的資料欄位是有類型屬性的。你碰上數值型態的就無法轉換成文字型態了。
也不可能為了要匯出而重做一份表。

所以一般還是分開取得再做結合的方式會比較好。
本篇文章回覆於2018-01-20 15:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

JACK
檢舉此回應
感謝版大神速的回覆。簡單易懂^_^
select group_concat(concat(column_name)) into outfile '{要匯出的檔案}' from information_schema.columns where table_name='{要匯出的表}' and table_schema='{要匯出的資料庫名}';
用此方式可匯出欄位名稱^_^
不過目前進階到另一個問題,就是匯出的欄位不完全,到第八十幾個欄位後,後面的欄位就沒匯出來了。(最後一個欄位名稱只有一半。可能是字串太長)。
本篇文章回覆於2018-01-20 18:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

JACK
檢舉此回應
剛爬文一下 好像跟group_concat 長度限制有關..
本篇文章回覆於2018-01-20 18:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

JACK
檢舉此回應
改變長度的設定(設定為102400) mysql_query("SET SESSION group_concat_max_len =102400");
本篇文章回覆於2018-01-20 18:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
group_concat確實是有長度問題沒錯。
不過你居然找到長度變動的方式了。

但一般來說我還是會比較建議你的php的方式來讀取會比較好。

不過80格欄位@@"也太多了吧。你一筆的容量是多大啊?
本篇文章回覆於2018-01-22 10:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

JACK
檢舉此回應
拜GOOGLE大神與大大的回覆。已經可以正常運行了^_^。
其實是在用奇摩賣場的大量上傳商品CSV檔。所以本身的需求就這麼多欄位^_^
還有其他賣場要繼續奮鬥中 ^_^"
本篇文章回覆於2018-01-22 21:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.