Không Có Gì

www.mediafire.com/tuchikara

Chuyển dữ liệu từ Opencart 1.5.6.1 lên Opencart 3.0.2.0

Bạn nghĩ gì về bài viết này?

Các bước chuyển dữ liệu từ Opencart 1.5.6.1 lên Opencart 3.0.2.0

Lý do tại sao nên nâng cấp lên phiên bản Opencart mới hơn: Opencart 1.5.6.1 là phiên bản ra đời từ năm 2014, không hỗ trợ cho giao diện Responsive, mà ở thời điểm hiện tại thì khách hàng sử dụng điện thoại và máy tính bảng để online là chính. Vì vậy bất kỳ website nào cũng phải hỗ trợ giao diện Responsive để tương tác tốt hơn với người dùng, điều nay sẽ được Google đánh giá cao trong quá trình phân tích website của bạn.

Từ phiên bản Opencart 2.0 đã hỗ trợ giao diện Responsive. Tuy nhiên tại thời điểm bài viết này thì Opencart đang ở phiên bản 3.0.2.0, nên mình viết cho phiên bản mới nhất này luôn.

Khi nâng cấp lên phiên bản Opencart mới hơn (Opencart 3.0.2.0) thì không thể sử dụng tiếp database (Cơ sở dữ liệu) của phiên bản cũ, chúng ta bắt buộc phải đưa từng sản phẩm thủ công lên website, điều này là một cực hình đối với những site có số lượng sản phẩm lên đến hàng ngàn. Ở đây chúng ta có 2 giải pháp.

  • Sử dụng một công cụ chuyển dữ liệu từ phiên bản cũ (1.5.6.1) lên phiên bản mới (3.0.2.0). Các bạn có thể tìm hiểu về Excel Export ($ 120 USD) trên Google.
  • Chuyển dữ liệu thủ công bằng câu lệnh SQL từ phiên bản cũ lên phiên bản mới. Đây chính là mục đích của bài viết.

Các bước được thực hiện như sau:

Bước 1

Backup website hiện có ở phiên bản Opencart 1.5.6.1 và cài lại trên localhost.
Cài đặt mã nguồn Opencart 3.0.2.0 lên localhost

Bước 2

Xóa dữ liệu mẫu trên Opencart 3.0.2.0

Bước 3

Import dữ liệu của Opencart 1.5.6.1 vào Opencart 3.0.2.0

Bước 4

Copy hình ảnh vào thư mục Localhost.

Bước 5

Cài đặt lại các Extension mà chúng ta sử dụng trong phiên bản cũ lên phiên bản mới. Lưu ý phải chọn phiên bản Extension tương thích với phiên bản Opencart mới.

Bước 6

Kiểm tra tổng thể website trước khi publish lên Internet

Lưu ý: Tất cả các bước ở trên đều phải thực hiên trên Localhost và kiểm tra kỹ rồi mới publish lên Internet.

Ở đây mình mặc định các bạn đã biết cách backup dữ liệu và cài đặt website lên Localhost. Mình chỉ hướng dẫn việc Import dữ liệu bằng câu lệnh SQL ở bước 3. Bạn nào chưa biết thì tham khảo tài liệu về Opencart ở link dưới đây (English)

https://www.mediafire.com/folder/8250npdhe299a/Tai_Lieu_OpenCart

Khi import dữ liệu từ phiên bản thấp lên phiên bản cao hơn trong Opencart, các bạn sẽ thấy được điểm yếu trong thiết kế Cơ sở dữ liệu của nó. Database của phiên bản mới không có tính đồng bộ và kế thừa cũng không hoàn chỉnh so với phiên bản cũ.

Ví dụ như sẽ có table trong Opencart 1.5.6.1 thì có nhưng trong Opencart 3.0.2.0 thì không còn tồn tại, hay như trật tự column trong table giữa 2 phiên bản không giống nhau, tên column giữa hai phiên bản không giống nhau mặc dù kiểu dữ liệu và dữ liệu là như nhau.. vân vân và vân vân.

Vì lý do này sẽ có những table chúng ta không thể import từ table sang table giữa 2 phiên bản mà phải import theo từng column chi tiết.

Cú pháp chung import dữ liệu giữa 2 database

*Import từ table sang table

Insert into ten_database1.ten_bang
Select * from ten_database2.ten_bang

*Import từ column sang column

Insert into ten_database1.ten_bang(column 1, column 2, column 3,……….,column n)
select column 1, column 2, column 3, ………, column n from ten_database2.ten_bang

ten_database1: là tên cơ sở dữ liệu của opencart 3.0.2.0

ten_database2: là tên cơ sở dữ liệu của opencart 1.5.6.1

Bởi vì dữ liệu của mỗi website là khác nhau, nên số lượng table cần import dữ liệu cũng sẽ khác nhau tùy vào từng website. Các bạn chỉ cần nhớ nguyên tắc chung là so sánh database của phiên bản cũ và phiên bản mới. Nếu table của phiên bản cũ có dữ liệu mà phiên bản mới không có thì chúng ta sẽ chuyển dữ liệu của table đó.

Những dữ liệu chúng ta bắt buộc phải chuyển nếu không muốn nhập tay lại là: sản phẩm(product), khách hàng(customer). Đơn hàng (order) có thể chuyển hoặc không nếu bạn không cần lưu trữ những đơn hàng cũ.

Database của Opencart 1.5.6.1 có 115 table, Database của Opencart 3.0.2.0 là 130 table. Mặc dù số lượng table khá nhiều, nhưng chúng ta không cần phải chuyển dữ liệu của tất cả các table, chỉ những table cần thiết, ví dụ như nhưng table liên quan đến sản phẩm, khách hàng, đơn hàng…

Dưới đây là câu lệnh chuyển dữ liệu của 1 website từ opencart 1.5.6.1 lên opencart 3.0.2.0. Minh họa trực quan cho các bạn dễ hình dung.

1- Bảng oc_address

insert into vpptuantu3.oc_address(address_id, customer_id, firstname, lastname, company, address_1, address_2, city, postcode, country_id, zone_id)
select address_id, customer_id, firstname, lastname, company, address_1, address_2, city, postcode, country_id, zone_id from vpptuantu1.oc_address

2 – Bảng oc_attribute

Chỗ này hơi khác một chút. Vì trong table này ở phiên bản Opencart 3.0.2.0 đã có dữ liệu mẫu, nếu chúng ta không xóa dữ liệu trước khi import dữ liệu thì sẽ bị báo lỗi trùng khóa chính (primary key)

Chạy câu lệnh này trước

Delete from vpptuantu3.oc_attribute

Sau đó chạy câu lệnh này

insert into vpptuantu3.oc_attribute
select * from vpptuantu1.oc_attribute

3 – Bảng oc_attribute_description

Tương tự bảng ở trên

Delete from vpptuantu3.oc_attribute_description

insert into vpptuantu3.oc_attribute_description
select * from vpptuantu1.oc_attribute_description

4 – Bảng oc_attribute_group

Tương tự bảng ở trên

Delete from vpptuantu3.oc_attribute_group

insert into vpptuantu3.oc_attribute_group
select * from vpptuantu1.oc_attribute_group
5 – Bảng oc_attribute_group_description

Tương tự bảng ở trên

Delete from vpptuantu3.oc_attribute_group_description

insert into vpptuantu3.oc_attribute_group_description
select * from vpptuantu1.oc_attribute_group_description

6- Bảng oc_banner

Tương tự bảng ở trên

Delete from vpptuantu3.oc_banner

insert into vpptuantu3.oc_banner
select * from vpptuantu1.oc_banner

7- Bảng oc_banner_image

Tương tự bảng ở trên

Delete from vpptuantu3.oc_banner_image

insert into vpptuantu3.oc_banner_image (banner_image_id,banner_id,link,image)
select banner_image_id,banner_id,link,image from vpptuantu1.oc_banner_image

8- Bảng oc_category

insert into vpptuantu3.oc_category
select * from vpptuantu1.oc_category

9- Bảng oc_category_description

insert into vpptuantu3.oc_category_description(category_id, language_id, name,description, meta_description, meta_keyword)
select category_id, language_id, name, description, meta_description, meta_keyword from vpptuantu1.oc_category_description

10- Bảng oc_category_path

insert into vpptuantu3.oc_category_path
select * from vpptuantu1.oc_category_path

11- Bảng oc_category_to_store

insert into vpptuantu3.oc_category_to_store
select * from vpptuantu1.oc_category_to_store

12- Bảng oc_currency

Delete from vpptuantu3.oc_currency

insert into vpptuantu3.oc_currency
select * from vpptuantu1.oc_currency

13- Bảng oc_customer

insert into vpptuantu3.oc_customer(customer_id, store_id, firsname, lastname, email, telephone, fax, password, salt, cart, wishlist, newsletter, address_id, ip, status, token, date_added)
select customer_id, store_id, firsname, lastname, email, telephone, fax, password, salt, cart, wishlist, newsletter, address_id, ip, status, token, date_added from vpptuantu1.oc_customer

14- Bảng oc_customer_ip

insert into vpptuantu3.oc_customer_ip
select * from vpptuantu1.oc_customer_ip

15- Bảng oc_language

insert into vpptuantu3.oc_language(language_id, name,`code`, locale, image, `directory`, sort_order, `status`)
select language_id, name, `code`, locale, image, `directory`, sort_order, `status` from vpptuantu1.oc_language where language_id=2

16- Bảng oc_option_description

insert into vpptuantu3.oc_option_description
select * from vpptuantu1.oc_option_description where language_id=2

17- Bảng oc_option_value_description

insert into vpptuantu3.oc_option_value_description
select * from vpptuantu1.oc_option_value_description where language_Id=2

18- Bảng oc_manufacturer

insert into vpptuantu3.oc_manufacturer
select * from vpptuantu1.oc_manufacturer

19- Bảng oc_manufacturer_to_store

insert into vpptuantu3.oc_manufacturer_to_store
select * from vpptuantu1.oc_manufacturer_to_store

20- Bảng oc_product  (Cực kỳ quan trọng)

insert into vpptuantu3.oc_product(`product_id`, `model`, `sku`, `upc`, `ean`, `jan`, `isbn`, `mpn`, `location`, `quantity`, `stock_status_id`, `image`, `manufacturer_id`, `shipping`, `price`, `points`, `tax_class_id`, `date_available`, `weight`, `weight_class_id`, `length`, `width`, `height`, `length_class_id`, `subtract`, `minimum`, `sort_order`, `status`, `viewed`, `date_added`, `date_modified`)
select `product_id`, `model`, `sku`, `upc`, `ean`, `jan`, `isbn`, `mpn`, `location`, `quantity`, `stock_status_id`, `image`, `manufacturer_id`, `shipping`, `price`, `points`, `tax_class_id`, `date_available`, `weight`, `weight_class_id`, `length`, `width`, `height`, `length_class_id`, `subtract`, `minimum`, `sort_order`, `status`, `viewed`, `date_added`, `date_modified` from vpptuantu1.oc_product

21- Bảng oc_product_description (Cực kỳ quan trọng)

insert into vpptuantu3.oc_product_description(`product_id`, `language_id`, `name`, `description`, `tag`, `meta_title`, `meta_description`, `meta_keyword`)
select  `product_id`, `language_id`, `name`, `description`, `tag`, `meta_description`, `meta_description`, `meta_keyword` from vpptuantu1.oc_product_description

22- Bảng oc_product_image (Cực kỳ quan trọng)

insert into vpptuantu3.oc_product_image
select * from vpptuantu1.oc_product_image

23- Bảng oc_product_reward (Cực kỳ quan trọng)

insert into vpptuantu3.oc_product_reward
select * from vpptuantu1.oc_product_reward

24- Bảng oc_product_to_category (Cực kỳ quan trọng)

insert into vpptuantu3.oc_product_to_category
select * from vpptuantu1.oc_product_to_category

25- Bảng oc_product_to_store(Cực kỳ quan trọng)

insert into vpptuantu3.oc_product_to_store
select * from vpptuantu1.oc_product_to_store

26- Bảng oc_seo_url (Lưu ý chỗ này trên Opencart 3.0.2.0 không còn table oc_url_alias mà thay bằng table oc_seo_url, vì vậy trong câu lệnh phải điều chỉnh lại một chút)

insert into vpptuantu3.oc_seo_url(seo_url_id, language_id, query, keyword)
select url_alias_id, 2, query, keyword from vpptuantu1.oc_url_alias

27-Bảng oc_stock_status

insert into vpptuantu3.oc_stock_status
select * from vpptuantu1.oc_stock_status

Thành quả:

 

Kết luận: Chúng ta sẽ cần phải format lại website cho phù hợp. Tuy nhiên phần việc mất nhiều thời gian nhất đã được giải quyết chỉ trong 1 ngày, giúp tiết kiệm được từ 2-3 tháng tùy vào số lượng sản phẩm nếu chúng ta add thủ công.

P/S: Đối với những bạn chưa có thời gian để nâng cấp lên Opencart 3.0.2.0 thì có thể cài đặt thêm Extension: Opencart Mobile Framework Admin Panel để có giao diện Responsive. Tuy nhiên cách này chỉ là giải pháp tình thế để đánh lừa Google, vì giao diện của nó không được đẹp, hình ảnh không hiển thị đúng kích thước khi xem trên điện thoại hay máy tính bảng.

TUCHIKARA

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s