![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 JACK ![]()
![]() |
目前在PHP下的匯出指令為 mysql_query("SELECT * table INTO OUTFILE 'table.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' ") or die(mysql_error()); |
1樓
最有價值解答
浩瀚星空 ![]() ![]() |
一般需要分成兩個方式來做輸出。
如果要用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樓 |
group_concat確實是有長度問題沒錯。
不過你居然找到長度變動的方式了。 但一般來說我還是會比較建議你的php的方式來讀取會比較好。 不過80格欄位@@"也太多了吧。你一筆的容量是多大啊?
本篇文章回覆於2018-01-22 10:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
JACK ![]() |
拜GOOGLE大神與大大的回覆。已經可以正常運行了^_^。
其實是在用奇摩賣場的大量上傳商品CSV檔。所以本身的需求就這麼多欄位^_^ 還有其他賣場要繼續奮鬥中 ^_^"
本篇文章回覆於2018-01-22 21:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |