jam 發問時間: 電腦與網際網路程式設計 · 9 年前

php讀取csv數值有逗號如何匯入mysql

請問csv以 "," 逗號為分隔符號 數據千位單位有逗號該如何匯入

例如"47,123" 匯入後變成47 請問 用php該如何拿掉雙引號" "及逗號讓它為47123

拿掉雙引號後零開頭的數據也能正常顯示呢?

謝謝

已更新項目:

請問我用您建議方法2

47,123無法顯示47123 如果是47,123,456如何顯示47123456

謝謝

1 個解答

評分
  • 9 年前
    最佳解答

    以下幾個方法供參考

    方法1

    修改 csv 來原檔案(可以用 Excel 文件開啟後,將千分位符號的欄位設定移除或取代)

    方法2

    在PHP使用 fgetcsv() 函數並在要移除千分位符號的欄位上使用 str_replace(),範例如下

    //test.csv

    A1,"1,000.00 ",00001

    A2,"2,000.00 ",00002

    A3,"3,000.00 ",00003

    A4,"4,000.00 ",00004

    A5,"5,000.00 ",00005

    // csv.php

    $row = 1;

    if (($handle = fopen("test.csv", "r")) !== FALSE) {

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

    $num = count($data);

    echo " $num fields in line $row:

    \n";

    $row++;

    for ($c=0; $c < $num; $c++) {

    echo $data[$c] . "

    \n";

    }

    }

    fclose($handle);

    }

    ?>

    執行結果

    3 fields in line 1: A1

    1,000.00

    000013 fields in line 2: A2

    2,000.00

    000023 fields in line 3: A3

    3,000.00

    000033 fields in line 4: A4

    4,000.00

    000043 fields in line 5: A5

    5,000.00

    00005

    方法3

    直接將 csv 檔案匯入 mysql 後再處理要移除千分位符號的欄位(請於 MySQL Command Window 下執行)

    mysql>

    LOAD DATA INFILE 'test.csv' /** 指定載入的 csv 檔案 */

    INTO TABLE test /** 指定載入目的表格 */

    FIELDS TERMINATED BY ',' /** 欄位間以 逗號(,) 分隔*/

    LINES STARTING BY '\n'; /** 列的結束符號 */

    當然有其他的方法,族繁不及備載。

    2011-02-08 19:01:05 補充:

    意見只能有300個字,幾個意見囉!

    1.以我的資料來源(test.csv)來說, 是第2個欄位要將千分位去除, 所以欄位索引編號(重0開始算起) = 1

    2.str_replace() 函數語法如下

    str_replace('要搜尋的字串' , '置換後的字串' , '原始的來源字串')

    附註:'搜尋的字串' 與 '置換後的字串' 都可以是陣列喔! <--- 非常好用

    2011-02-08 19:01:48 補充:

    3.請將 csv.php 修改如下

    $num fields in line $row: \\n";

    $row++;

還有問題?馬上發問,尋求解答。