Hướng dẫn read large csv file php - đọc tệp csv lớn php
Tìm hiểu cách đọc hiệu quả một tệp CSV khổng lồ và phân tích dữ liệu của nó trong PHP. Nếu bạn làm việc cho một công ty cung cấp dịch vụ phát triển ngay cả đối với các công ty khác trong cùng ngành, bạn có thể đã có nhiệm vụ "tuyệt vời" này là nhập một "cơ sở dữ liệu" khổng lồ từ khách hàng vào công cụ cơ sở dữ liệu mà công ty của bạn ưa thích. Ví dụ, trong công ty của chúng tôi, chúng tôi làm việc với MySQL và khách hàng của chúng tôi đã đưa ra một tệp CSV khoảng 25GB với các hàng ~ 7,5M. Rõ ràng, do logic mà dự án yêu cầu, chúng tôi không thể chỉ cần nhập tệp vào cơ sở dữ liệu thông qua một công cụ như phpmyadmin, vì mỗi hàng trong CSV nên được sửa đổi để phù hợp với thiết kế cơ sở dữ liệu mới của chúng tôi. Trong bài viết này, chúng tôi sẽ giải thích cho bạn cách tiếp cận của chúng tôi để đọc một cách hiệu quả một tệp CSV khổng lồ trong PHP. 1. Chia tệp của bạn thành các khối nhỏ hơnĐể bắt đầu, khi chúng tôi nói về các tệp khổng lồ, chúng tôi không nói về các tệp có hàng 50k hoặc 70k, chúng tôi nói về hàng triệu hàng như trong ví dụ này, với tệp CSV là 25GB. Vì vậy, cách tiếp cận chính xác cho các trường hợp như vậy là không hoạt động trực tiếp với tệp, mà là với các tệp nhỏ hơn. Tệp càng nhỏ thì càng tốt để có hiệu suất tối ưu và kiểm soát tập lệnh của bạn, không chỉ về quan điểm hiệu suất mà cả logic. Chúng tôi đã viết một bài viết trước đây về cách chia các bộ dữ liệu CSV lớn thành các khối nhỏ hơn bằng cách sử dụng CSV Splitter, một công cụ cho Windows 10. Tất nhiên bạn có thể làm điều tương tự bằng cách sử dụng một cách tiếp cận khác, nhưng, bạn có ý tưởng đúng không? Chia tệp thành các khối nhỏ hơn có thể dễ dàng được xử lý bởi các tập lệnh của bạn sau này.Split the file into smaller chunks that can be easily processed by your scripts later. 2. Thực hiện tập lệnh đọc và lặpĐể đọc tệp, chúng tôi sẽ sử dụng chức năng fopen của PHP, chức năng Inbuilt này được sử dụng để chỉ cần mở một tệp từ URL cục bộ, nó được sử dụng để liên kết tài nguyên với hơi nước. Nó mong đợi là đối số thứ hai, chế độ mà chúng ta sẽ hoạt động, trong trường hợp này, chỉ đọc với định danh Chúng tôi sẽ đọc tệp bằng phương pháp này và sẽ lưu trữ con trỏ vào biến Chức năng FGETS của PHP trả về một dòng từ một tệp mở với fopen và nó trả về sai khi không còn gì để đọc. Sau đó, bên trong vòng lặp trong khi bạn sẽ có thể phân tích chuỗi CSV thô với hàm
Ưu điểm của phương pháp này là:
Happy Coding ❤! Sau khi đấu tranh rất nhiều, cuối cùng tôi cũng tìm thấy một giải pháp tốt, cũng có thể giúp đỡ người khác. Khi tôi đã thử tệp CSV 2.367kB chứa 18226 hàng, thời gian ít nhất được thực hiện bởi các tập lệnh PHP khác nhau là (1) từ tài liệu php.net . Giải pháp tốt nhất tôi tìm thấy sử dụng tổng số |