Upload 1M bài viết EZArticles lên Wordpress làm thế nào ?

Discussion in 'Thảo Luận Chung' started by Dung Le, Dec 18, 2018.

  1. Dung Le

    Dung Le Sơ Nhập Giang Hồ

    Chả là mình đã down về toàn bộ database 1M EZarticles và dự định up lên Wordpress nhưng loay hoay mãi vẫn không có cách nào nên đành nhờ các bác chỉ điểm giúp :

    - Mở DB ra thi thấy có mấy cột (id,ezine_id,title,content,author,category,post date, word count, keyword,sign) . , mình xuất ra file csv thì cũng ổn nhưng chỉ tầm 10k rows/ file vì nặng quá thì excel cũng mở không nổi .

    - Mở table wp_posts trong database của wordpress thì thấy có 23 column (ID,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_password,post_name, to_ping,pinged, post_modified,post_modified_gmt,post_content_filtered,post_parent,guid,menu_order,post_type,post_mime_type,comment_count)

    1.Hiện tại mình chỉ biết một cách làm được nhất là xuất ra file excel với tầm 1000 dòng , chỉ còn chừa lại 3 column (title,content, keyword) rồi dùng plugin WP-All import để upload lên WP , cách này bao được nhưng tốn 1 tiếng cho 2000 rows( làm test trên local host thôi ) ==> suy ra mất 500 giờ để làm xong 1 triệu articles ==> nản quá nên mình đành bỏ cuộc .

    Cách này được cái là được up cả tag theo bài viết nên cũng là tốt .

    2.Cách 2 : dùng code php để up trực tiếp vào table wp_posts , mình lượm được cái này trên mạng , đã test thử với table nhỏ, đơn giản 1-2 column thì okie nhưng với table của Wordpress thì bị lỗi . Cách này cũng chỉ up được phần title và content , còn tag thì phải up riêng vào table khác và đánh theo phần quản lý bài viết nên mình cũng chưa mò ra .

    "
    <?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "test";
    //For create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    $query = "LOAD DATA LOCAL INFILE
    'D:/TEST IMPORT DATA BANG CSV FILE/test.csv'
    INTO TABLE wp_posts
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (ID,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_password,post_name,to_ping,pinged, post_modified,post_modified_gmt,post_content_filtered,post_parent,guid,menu_order,post_type,post_mime_type,comment_count)
    )";
    if (!$result = mysqli_query($conn, $query)){
    echo '<script>alert("Oops... Some Error occured.");</script>';
    exit();
    //exit(mysqli_error());
    }else
    echo '<script>alert("Data Inserted Successfully.");</script>'

    ?>"

    Nhờ các bác xem giúp là code có lỗi gì không hay tại file csv của mình có vấn đề .

    3. Đây là file up vào database dựa trên local file , nếu up trên host trực tiếp thi cần sửa câu lệnh gì có thể up được với file để cùng thư mục với wp-config.php?

    4. Phần định dạng data của post date là datetime là ( 0000-00-00 00:00:00 ) thì không biết trong excel mình set thế nào để hệ thống nhận đúng ngày set ?

    Các bác thông cảm , mình là tay ngang nên cơ bản không có , anh em xem hỗ trợ giúp để cố gắng có cái web 1 triệu post nhé .
     
    Last edited: Dec 19, 2018
  2. wpresources

    wpresources Bang Chúng

    Anh cứ dùng lệnh cơ bản đi đã đọc từng dòng trong database rồi insert vô wordpress,nhiều dòng quá thì đọc 1000 row database một.
     
    Dung Le likes this.
  3. Dung Le

    Dung Le Sơ Nhập Giang Hồ

    Ý bạn nói là input bằng tay vào database à ? chưa hiểu lắm?
     
  4. Nai

    Nai MiddleMan Staff Member

    2 năm trước không biết tí xíu gì, cũng cố mày mó với kiến thức lượm lặt từ mysql kết hợp với excel để input vô wordpress. Nói thiệt cũng khá đuối khi chỉ mới khoảng 30k posts
     
    tienganhtiengem and Dung Le like this.
  5. Dung Le

    Dung Le Sơ Nhập Giang Hồ

    Sau hai năm thì giờ Nai up lên 50 M post rồi hén ! chỉ vài chiêu giúp nhé
     
    tienganhtiengem likes this.
  6. tienganhtiengem

    tienganhtiengem Sơ Nhập Giang Hồ

    em giờ mới học nè bác :)
     
  7. wpresources

    wpresources Bang Chúng

    Anh để tuổi cao quá em vẫn xin xưng anh đi ạ{feel_good}
    +Ý em là mấy cái import khó quá thì anh cứ làm kiểu truyền thống trước đã
    +B1 : đọc dữ liệu từ nguồn crawl
    +B2 : insert dữ liệu đó lên wordpress
    =>nếu thấy chậm quá thì kết hợp với luồng import cho nhanh
     
    Dung Le likes this.
  8. Dung Le

    Dung Le Sơ Nhập Giang Hồ

    Sorry, hơi có tuổi nhưng kinh nghiệm còn non lắm nên chẳng so được với mấy anh em ở đây đâu. Đừng ngại nhé.

    Sorry nếu giải thích cách hiểu theo newbie nhé mấy cái bạn giải thích :

    B1:File gốc là sql, mình mở bằng Mysql workbench hoặc phpmyadmin , trích xuất ra được file csv/ xml nhưng to quá, tầm 400k rows nên đành export bằng tay với mỗi file là 10k rows cho dễ xử lý trên excel, vị chi là 40 file
    Từ file đó, xoá/ thêm các cột tương ứng với table của wordpress như mô tả để thành file import được( xử lý ngoài mấy cái slug,img..)
    B2: insert vào WP : bước này là khoai nhất, đang xử lý bằng plugin wp import nhưng tốc độ chậm quá, nên thấy các bác bày cách import bằng code nên mới vọc tìm code trên mạng nhưng bị kẹt rồi.

    Chưa hiểu câu “nếu thấy chậm quá thì kết hợp với luồng import” là sao? ý bạn là dùng công cụ gì à .
     
  9. thitgaluoc

    thitgaluoc Hương Chủ

    bác thử dựng wordpress trên localhost rồi gửi title, content, category qua xmlrpc.php chưa?
     
    Vito_King and Dung Le like this.
  10. Nai

    Nai MiddleMan Staff Member

    Cách gà mờ hồi xưa không biết code mình là bắt chước:
    • Bước 1: Export 5 post trong wordpress ra flle post.sql xem nó ra câu lệnh import là gì.
    • Bước 2: Tìm cách nhái lại câu lệnh import từ file post.sql vừa export.
      Ví dụ như mô phỏng lại từng cột với khoảng 100 dòng data cần import vào: title, slug, date,...
    • Bước 3: Tìm công cụ để tạo có thể tạo ra 1 file import vào dữ liệu là hàng nghìn, trăm nghìn hay triệu post dựa theo mẫu post.sql có sẵn:
      - Như excel (hơn 1 trăm nghìn là hơi đuối vì rất ngốn RAM để xử lý chuỗi.
      - Winautomation: Ghi dữ liệu text với số lượng post nhiều hơn excel mà không ngốn RAM bằng.
    Cuối cùng khi nhu cầu càng cao mà công cụ không đáp ứng được thì chọn ngôn ngữ nào mình học và hiểu nhanh nhất, ứng dụng cho nhiều việc nhất. Và hiện tại mình chỉ dùng mỗi php.
     
    tienganhtiengem and Dung Le like this.
  11. Dung Le

    Dung Le Sơ Nhập Giang Hồ

    Vẫn đang dựng WP bằng XAMPP trên laptop đấy chứ , tốc độ còn chuối quá thì lên VPS sao chịu nổi đây bác , cái khoản xmlrpc.php thì có nghe qua nhưng chưa thử làm , sẽ check xem sao .
     
  12. thitgaluoc

    thitgaluoc Hương Chủ

    em làm thử tốc độ khá phết, tầm 10k post mất khoảng 15-20 phút :D nhưng mà db càng to thì thằng wp phải check duplicate càng lâu mỗi khi post đấy
     
    Dung Le likes this.
  13. wpresources

    wpresources Bang Chúng

    Tốc độ bao mà mà kêu chuối hả anh.

    Câu trên ý em nói là anh đang dùng php thì đọc kiểu bình thường đã tạm bỏ qua csv.execl... đi.Chỉ đọc dữ liệu từ database từ database này sang cái kia thôi.Tốc độ insert chậm quá thì anh học thêm về luồng từ khóa ví dụ: php thread
     
  14. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Chủ thớt ko biết code thì làm thử 1 cách nầy nè, làm 1 file csv chứa thông tin (bài viết) của trường wp-post, xong rồi import vô phpmyadmin theo kiều import db ấy, bao nhanh luôn.đừng xài wp-all-import
     
    Dung Le likes this.
  15. Dung Le

    Dung Le Sơ Nhập Giang Hồ

    À, ý minh là import bằng WP all import đấy , cắm máy thì thấy mất 8 tiếng cho 10k post rồi , còn xmlrpc thì chưa biết xài nên chưa biết sao .
     
  16. Dung Le

    Dung Le Sơ Nhập Giang Hồ

    Mình có thử qua cách import trực tiếp qua PHPmyadmin thì thấy khá nhanh hơn rồi nhưng nó bị hạn chế là max file size không lớn ( nhưng tạm chấp nhận vì excel cũng xử lý tới cỡ đó thôi ) NHƯNG vấn đề là nó chỉ cho mình input phần title,content,slug , chứ phần tag thì phải xử lý riêng trên table khác.==> không tận dụng được thế mạnh của tag.

    ==> Câu hỏi đặt ra là : Chúng ta đều phải quay tay khi input vào database thế này à ? quay tay toàn tập thì mất vài ba ngày mới xong đấy .

    Có cách nào xử lý toàn diện luôn trên database không ? ví dụ : từ file sql của ezarticles , dùng câu lệnh để xóa vài column , chèn thêm vài column tương tự như table của wordpress , bổ sung thêm data còn thiếu như tăng id, tạo slug ,... sau đấy đổ trực tiếp vào table wp_posts của wordpress luôn .

    Mấy cái này chắc là chơi command line thì chịu nổi chứ dùng trên giao diện thì đứng đường rồi.

    Tập không dấu dốt nên các bác cứ gạch đá nhé.
     
  17. thitgaluoc

    thitgaluoc Hương Chủ

    giải pháp em đã làm : post qua xml-rpc, sau đó export file sql ra, upload lên server rồi import trở lại :D
     
    Dung Le likes this.
  18. money

    money Hương Chủ

    Import db nhanh nhất là dùng commandline.
    Vấn đề là db mình đang có (như pé thớt là db của EZ) và wordpress db khác nhau về cấu trúc nên ko dùng luôn dc.
    Pé thớt hỏi rất hay là làm sao thêm bớt columns ... tức là đồng bộ cấu trúc db. Khônng có cách để xử lý ngay trên file sql đâu. Giờ phải làm là:
    - tạo db và import EZ db vào mysql
    - chỉnh sửa EZ db trong mysql cho phù hợp cấu trúc của WP db (thêm/bớt/sửa/... các columns)
    - export ra file sql
    - import vào WP db để dùng cho website
    Anh chỉ đưa ra cái ý tưởng chung như vậy cho có hướng đi chứ thực hiện chi tiết sẽ có khó khăn và khác biệt chút ít, phải tự mò và hỏi thêm.
     
    Dung Le likes this.
  19. money

    money Hương Chủ

    Lưu ý khi đồng bộ cấu trúc db, cái EZ db ko cần giống y như WP db mà chỉ cần có tất cả các columns cần thiết cho WP db là được. Khi export mình sẽ export các columns cần thiết đó thôi.
     
  20. Nai

    Nai MiddleMan Staff Member

    Cách này của ảnh nhẹ nhàng và trực quan đây thớt. Nên làm liền ngay và lặp tức hoặc học code :D