NỘI DUNG
Chuyển sản phẩm WooCommerce bằng SQL
Trong quá trình nâng cấp website, đổi domain hoặc gộp nhiều website bán hàng về một hệ thống WooCommerce duy nhất, việc chuyển toàn bộ sản phẩm từ web A sang web B là nhu cầu rất phổ biến. Có rất nhiều cách để làm việc này như
- Import csv trực tiếp bằng tính năng của WooCommerce nhưng với số lượng sản phẩm lớn thì cách này không phù hợp
- Sử dụng Plugin nhưng đa phần các Plugin đều là bản trả phí
- Sử dụng WP-CLI đây là cách rất tốt và tôi đã có một bài chi tiết về nó: Hướng dẫn Export và Import sản phẩm WooCommerce bằng WP-CLI
Và trong bài viết hôm nay thì tôi sẽ hướng dẫn chuyển sản phẩm WooCommerce bằng SQL
Ưu điểm khi sử dụng SQL
- Tốc độ cực nhanh
- Chủ động xử lý trùng ID
- Giữ được đầy đủ các trường: Ảnh đại diện, Gallery, Danh mục, Tag, Sản phẩm biến thể
Các bước chuyển sản phẩm WooCommerce bằng SQL
Lưu ý quan trọng: Bạn hãy sao lưu lại dữ liệu website trước khi thực hiện. Để phòng những trường hợp lỗi phát sinh.
Trong hướng dẫn này tôi sẽ chú thích trước các thông tin như sau:
- Web A: Là web gốc có nhiều sản phẩm
- Web B: Là web mới, web cần import sản phẩm vào
- Prefix Database Web A: wpqr_
- Prefix Database Web B: wp_
Vì sử dụng SQL nên bạn cần phải có sẵn file databae_webA.sql.
Bước 1: Import Database
Bạn import file SQL của web A trực tiếp vào database web B.
⚠️ Nếu web A trùng prefix với web B thì bắt buộc phải đổi prefix trước khi import.
Ví dụ đổi từ
wp_posts → wpqr_posts
wp_postmeta → wpqr_postmeta
Chạy lệnh sau để đổi
sed -i ‘s/wp_/wpqr_/g’ webA.sql
Sau khi nhập xong Database bạn sẽ thấy giống như ảnh. Trong database chứa được 2 database của 2 web.

Bước 2: Xác định thông tin Web A và Web B
Việc xác định được prefix Database rất quan trọng vì dùng để copy dữ liệu sang.
| Website | Tên miền | Thông tin Database | Prefix |
| Web gốc (A) | domain-webA.com | User, DB Name, Passwd web B | wpqr_ |
| Web gốc (B) | domain-webB.com | User, DB Name, Passwd web B | wp_ |
Bước 3: Thực hiện copy sản phẩm từ Database Web A sang Database Web B
Tạo file php script tự động
Bạn truy cập vào thư mục web tạo một file php đặt tên kiểu như sau import_product.php. Sau đó copy toàn bộ code ở ở đây vào: Code ở đây
Chạy php script để gộp sản phẩm
Hoặc bạn mở Terminal sau đó chạy lệnh sau
wget https://raw.githubusercontent.com/dotrungquan/PHP/refs/heads/main/import_product.php
php import_product.phpKhi chạy lệnh php này sẽ yêu cầu bạn nhập vào
- Username MySQL
- Password MySQL
- Database name
- Prefix DB web gốc
- Prefix DB web mới
- Chọn mode 1 hoặc 2: Chọn 2
- Có chạy WP-CLI hay không

Bước 4: Upload ảnh vào wp-content/uploads
Đây là bước BẮT BUỘC nếu bạn muốn hiển thị ảnh. Bạn cần copy toàn bộ thư mục ảnh từ web A sang web B và đặt đúng vào thư mục wp-content/uploads. Khi chuyển sang thì các sản phẩm sẽ hiển thị ảnh ở web và Media vì dữ liệu meta đã có trong attachment.
Bước 5: Kiểm tra sau khi gộp
Sau khi gộp xong thực hiện kiểm tra xem các sản phẩm đã thật sự qua hết chưa.
Đây là ảnh trước khi gộp của WebB, chỉ có 57 sản phẩm gốc ban đầu.

Còn ảnh bên dưới là sau khi gộp. Các sản phẩm đã qua và có ảnh hiển thị.

Sau khi gộp thành công. Bạn có thể xoá bỏ Database cũ đi bằng cách select các table có prefix cũ nhé.
Tổng kết
Việc gộp sản phẩm WooCommerce từ website A sang website B bằng SQL mang lại rất nhiều lợi ích như: tiết kiệm thời gian, chủ động xử lý dữ liệu, không phụ thuộc vào plugin và đặc biệt phù hợp với các hệ thống hosting, VPS có số lượng sản phẩm lớn. Với phương pháp sử dụng remap ID tự động, bạn hoàn toàn yên tâm rằng dữ liệu được gộp vào sẽ không bị trùng ID, không lỗi biến thể, không mất hình ảnh, không sai danh mục hay tag.
Tuy nhiên trong quá trình thực hiện, bạn cần đặc biệt lưu ý:
- Luôn sao lưu database đầy đủ trước khi thao tác.
- Kiểm tra kỹ prefix của web gốc và web đích để tránh chèn nhầm bảng.
- Bắt buộc phải copy thư mục wp-content/uploads để đảm bảo hình ảnh hiển thị đầy đủ.
- au khi gộp xong, nên chạy lại các lệnh WP-CLI để tái tạo bảng giá, xóa cache tạm và đổi URL nếu cần.
