快速答案:WooCommerce 內建就有商品 CSV 匯入匯出(商品 → 全部商品 → 上方的「匯入」「匯出」)。不出錯的關鍵有三個:動手前先匯出一份當範本與備份;更新既有商品時一定用 ID 或 SKU 對應,並勾選「更新現有商品」;CSV 存成 UTF-8,別讓 Excel 改掉 SKU、電話、條碼的格式。大檔或定期更新再換 WP All Import。
為什麼會這樣 #
匯入工具只認欄位與識別碼。對不上既有商品的列,一律當成新商品建立——這就是「重匯一次商品變兩份」的由來。更新時有對應、內容卻留空的欄位,則可能把原本的價格或說明蓋成空白。
另一半的問題出在 Excel。它開 CSV 時常用錯編碼讓中文變亂碼,還會自作主張:開頭的 0 被吃掉(SKU、電話)、長條碼變成科學記號、看起來像日期的貨號被轉成日期。存檔後這些改變就寫死在檔案裡,匯入時整批跟著錯。
怎麼處理 #
- 動手前備份資料庫,並先匯出一份現有商品(勾選匯出所有欄位)。這份檔案既是備份,也是最準的欄位範本。
- 先拿三到五列測試,到前台確認價格、庫存、圖片、分類都對再跑整批;筆數多就切成每批幾百列。
- 更新既有商品:保留 ID 或 SKU 欄並勾選「更新現有商品」;只放要改的欄位,其他欄在對應畫面設為不匯入,避免空白蓋掉原資料。
- 編輯 CSV 用 Google 試算表,或在 Excel 用「資料 → 從文字/CSV」開檔,把 SKU、電話、條碼欄設成文字;存檔選「CSV UTF-8」。
- 格式照範本:可變商品是父商品一列、每個變化一列,變化列的「上層」欄填父商品的 SKU;屬性名稱與值要跟既有的完全一致。分類用「>」分層、逗號分隔多個。
- 圖片欄填的是網址,匯入時會一張張下載。圖片多就先用 FTP 把圖檔整批傳到網站上的資料夾再填網址;重匯時圖片沒變就別對應圖片欄,免得媒體庫長出一堆重複圖。
- 檔案上千筆、要定期從供應商檔案更新時,換 WP All Import:它能設唯一識別碼比對、只更新指定欄位、分批處理。「刪除檔案裡沒有的商品」這個選項要非常小心,只匯部分資料時開著它,其他商品會被刪光。零星改價格、庫存,則用表格式的批次編輯外掛直接在後台改。
我們實際遇過的情況 #
一個多國版本的產品型錄網站,客戶自己重新上傳某國的品項,結果新品項疊在舊的上面變成兩份——匯入沒對上既有資料的典型結果。這時先把多出來的那批清掉,再用識別碼比對重匯,別再疊一次。
一個商品筆數很多的型錄站,客戶定期給整份產品資料表,我們先跟上一版比對、只篩出新增與變動的列再匯入,後來整個流程改成表格式編輯外掛搭 WP All Import。另一家客戶匯出的資料用 Excel 開啟,電話開頭的 0 不見了,我們把匯出的電話格式調整成 Excel 也會照原樣顯示。
什麼時候該找人 #
一次要動上千筆商品,或匯入已經把資料弄亂(重複、價格被清空、圖片對錯商品)——這時先停手,別再匯第二次蓋上去,從備份或匯入紀錄回推比較快;考慮整站還原前,先讀還原會丟什麼。商品匯進去卻沒出現在商店,看商品上架了前台沒出現。
WPTOOLBEAR網站工具熊