Cách đọc tệp excel từ thùng s3 bằng nút js
TRUY CẬP=cấu hình. s3bucket['aws_access_key'] Show
BÍ MẬT=cấu hình. s3bucket['aws_secret_key'] url_e=config. thùng s3['url'] khách hàng = boto3. client(service_name="s3", region_name="us-east-1", aws_access_key_id = TRUY CẬP, aws_secret_access_key= BÍ MẬT) khách hàng. download_file('bucketname','downloadfile. csv','downloadfile. csv') print ("Đang tải xuống đối tượng %s từ bộ chứa %s" % ('downloadfile. csv','tên nhóm')) #bước 1. tập tin chia thành hai tập tin nếu hệ điều hành. con đường. tồn tại ('11. csv') print('File đã tồn tại trước đó và đã bị xóa. ') nếu hệ điều hành. con đường. tồn tại ('22. csv') print('File đã tồn tại trước đó và đã bị xóa. ') với open('downloadfile. csv', 'r', encoding='UTF-8') dưới dạng tệp #with open(myfile, 'r', encoding='UTF-8') dưới dạng tệp. tiêu đề = dòng. dải('\n'). tách ra(',') Chúng tôi tại H+S cống hiến cho một nguyên nhân đơn giản. tạo bài viết về các kịch bản lập trình cụ thể kỳ lạ. Ở một nơi nào đó trên thế giới, linh hồn buồn bã đang tìm cách truy cập các tệp theo chương trình từ máy chủ S3 trong khi giữ bộ chứa của họ ở chế độ riêng tư. Cho người đó. chúng tôi nghe thấy bạn Có rất nhiều lý do khiến bạn muốn truy cập tệp trong S3. Ví dụ: giả sử bạn đã đọc bài đăng đó về cách sử dụng Pandas trong hàm Lambda. Vì bạn đã quen thuộc với PyMySQL, nên theo giả thuyết, bạn có thể xuất dữ liệu từ truy vấn DB sang CSV được lưu trong S3. Tôi cá là bạn có thể đoán những gì tôi đã làm gần đây Định cấu hình AWS CLI trên VPS của bạnCách dễ nhất và an toàn nhất để tương tác với các dịch vụ AWS khác trên phiên bản EC2 (hoặc VPS bạn chọn) là thông qua AWS CLI. Điều này dễ dàng được cài đặt dưới dạng thư viện Python3 toàn cầu
Với CLI được cài đặt, chúng tôi sẽ có thể làm điều gì đó thực sự kỳ diệu. đặt cấu hình AWS của chúng tôi trên toàn cầu. Điều này có nghĩa là bất cứ khi nào chúng tôi sử dụng để tương tác với một vi dịch vụ (chẳng hạn như S3), thư viện boto3 sẽ luôn xem các tệp được lưu trữ trong 4 để tìm khóa và bí mật của chúng tôi mà không cần chúng tôi chỉ định. Điều này quan trọng từ góc độ bảo mật vì nó xóa tất cả các đề cập đến thông tin xác thực khỏi cơ sở mã của chúng tôi. bao gồm cả vị trí của những bí mật đã nóiSử dụng 5 để bắt đầu quá trình
Điều này tạo ra một vài tệp cấu hình cho chúng tôi. Nếu chúng tôi không bao giờ cần sửa đổi các tệp này, chúng có thể được tìm thấy tại đây
Thời gian nútChúng tôi sẽ cho rằng bạn đã thiết lập một ứng dụng với một số định tuyến cơ bản, chẳng hạn như thiết lập ExpressJS barebones Trong ứng dụng của bạn, chúng tôi sẽ cần thêm 2 phụ thuộc
Bây giờ chúng ta sẽ tạo một route
Lưu ý các dấu ngoặc nhọn trống trong 6. Nếu chúng tôi đã quyết định mã hóa cứng thông tin xác thực của mình vào mã nguồn một cách dã man, thì thông thường các giá trị đó sẽ nằm giữa các dấu ngoặc đó dưới dạng một đối tượng. Khi các dấu ngoặc trống, thư viện AWS sẽ tự động biết tìm đến tệp thông tin đăng nhập AWS của chúng tôi để biết các khóa bí mật và quyền truy cập của chúng tôiĐây là cách bạn làm mọi thứ sai cách, chỉ trong trường hợp bạn muốn được giải trí
Vâng, điều đó hoàn toàn sẽ không được thực hiện ở đâu đó một cách tình cờ. lắc đầu Nó khá là nhiều. tuyến đường này sẽ nhắc tải xuống tệp đích khi nhấn vào tuyến đường. Tôi chắc chắn rằng tất cả chúng ta đều thích ngồi đây và trải qua các trường hợp sử dụng phức tạp hơn, chúng ta hãy tránh hoàn toàn Callback Hell và tận hưởng thời gian còn lại trong ngày Bạn có thể tạo bất kỳ tệp Excel nào bạn thích, ảnh chụp màn hình của tệp đơn giản mà tôi sẽ sử dụng cho bài viết này ở bên dưới. Tôi đặt tên tệp là Dữ liệu. xlsx dữ liệu excel. Trang tính mặc định1Tôi sẽ sử dụng Visual Studio Code (VSCode)
npm install read-excel-file
Đọc tệp ExcelBây giờ chúng tôi đã sẵn sàng để đọc tệp Thêm đoạn mã sau vào chỉ mục của bạn. tập tin js const xlsxFile = require('read-excel-file/node'); Ghi chú bên lề. Trong câu lệnh yêu cầu, chúng tôi đã chỉ định /node. Điều này rất quan trọng vì điều này cũng có thể được thực hiện với JavaScript trong trình duyệt bằng cách sử dụng, ________số 8
Mật mãDòng đầu tiên nhập gói Dòng thứ hai đọc tệp, trả lại lời hứa. Khi đọc xong, chúng tôi nhận được các mảng Mỗi mảng (tham số hàng của hàm gọi lại) chứa một hàng trong bảng tính. Mỗi trong số này có ba mảng tương ứng với ba cột trong bảng tính của chúng tôi
Xem dữ liệu thô Sửa đổi mã của bạn để xác minh rằng chúng tôi đang lấy dữ liệu từ tệp const xlsxFile = require('read-excel-file/node'); Chạy cái này ở chế độ gỡ lỗi, F5, rồi chạy mà không cần gỡ lỗi, Ctrl + F5 Chạy trong cả hai sẽ giúp chúng tôi hình dung những gì chúng tôi đang nhận lại cũng như xác minh dữ liệu đã được đọc từ tệp F5
CTRL+F5Điều này cho một bức tranh tốt hơn về cấu trúc mảng Lấy dữ liệu thực tếVì dữ liệu ở dạng mảng nên có thể dễ dàng truy cập. Dưới đây là hai cách để truy cập dữ liệu vòng lặp forEach Sửa đổi mã của bạn như sau để xem từng phần dữ liệu và đó là loại dữ liệu Tham số dữ liệu chứa chứa mục nhập ô bảng tính 0Đầu ra sử dụng forEach vì. trong vòng lặp Sửa đổi mã của bạn để sử dụng vòng lặp for…in 1Kết quả tương tự khi chạy nhưng mã này cho phép chúng ta nhìn rõ hơn cấu trúc mảng và cách truy cập các phần tử mảng rows[i][j] chứa dữ liệu trong mỗi ô của bảng tính Điều gì sẽ xảy ra nếu chúng ta có hai trang tính có tên là Dev và Exec? Theo mặc định, khi chúng tôi đọc, tờ đầu tiên được đọc. Tuy nhiên chúng ta có thể,
Tệp Excel đã sửa đổiTôi đã sửa đổi tệp Excel của mình, Dữ liệu. xlsx, để có hai trang tính Bảng phát triểnBảng điều hànhLấy danh sách tên trang tínhTên trang tính được trả về dưới dạng một mảng đối tượng. Mỗi đối tượng có cấu trúc, {Tên. 'tên trang tính'} Trong trường hợp của chúng tôi, nó sẽ trả về mảng này, [{name. 'Nhà phát triển'}, {tên. ‘Exec’}] Sửa đổi mã của bạn như sau để có danh sách các trang tính 2Ở đây chúng tôi đã chuyển tham số đối tượng { getSheets. thật } Sau đó, sử dụng vòng lặp forEach để lặp qua mảng trang tính và truy cập thuộc tính tên của từng đối tượng Truy cập tên trang tính. Nhà phát triển, Giám đốc điều hànhChỉ định trang tính để lấy dữ liệuĐể chỉ định trang tính mong muốn, chúng tôi sẽ chuyển {sheet. } tham số đối tượng. Cái này có hai dạng. Bạn có thể chỉ định theo số trang tính hoặc tên trang tính. Để truy cập trang 2, chúng ta có thể sử dụng một trong những cách sau,
Sửa đổi mã của bạn như sau để truy cập dữ liệu của bảng Exec 3Sheet2, Exec, dữ liệuKết luậnGói npm thực hiện tất cả công việc đọc tệp. Phần quan trọng là cách dữ liệu được trả về. Nó được trả về dưới dạng một mảng hai chiều Làm cách nào để đọc tệp từ nhóm S3 bằng NodeJS?Làm cách nào để sử dụng Bộ chứa AWS S3 với Ứng dụng NodeJS? . Bước 1. Nhận khóa thông tin xác thực của bạn Bước 2. Tạo một nhóm Bước 3. Triển khai trong dự án nodeJs. Tải đối tượng/tệp lên thùng. Truy cập hoặc tải xuống đối tượng/tệp từ thùng. Xóa đối tượng/tệp khỏi thùng Làm cách nào để đọc dữ liệu từ tệp excel trong NodeJS?Dòng đầu tiên nhập gói. . Dòng thứ hai đọc tệp, trả lại lời hứa. . Xem dữ liệu thô Chạy cái này ở chế độ gỡ lỗi, F5, rồi chạy mà không cần gỡ lỗi, Ctrl + F5 vòng lặp forEach Tham số dữ liệu chứa chứa mục nhập ô bảng tính vì. trong vòng lặp rows[i][j] chứa dữ liệu trong mỗi ô của bảng tính Làm cách nào để tải lên tệp excel trong S3 bằng nút js?Trong vài bước tiếp theo, tôi sẽ hướng dẫn bạn xây dựng một ứng dụng dựa trên nodejs, ứng dụng này có thể ghi bất kỳ tệp nào lên AWS S3. . Thiết lập ứng dụng nút. Một ứng dụng nút cơ bản thường có 2 tệp, gói. . Cài đặt phụ thuộc. Hãy bắt đầu bằng cách cài đặt gói NPM. . gói nhập khẩu. . Truyền thông tin nhóm và viết logic nghiệp vụ. . Tệp để tải lên S3 Làm cách nào để đọc tệp excel lớn trong NodeJS?Tạo bộ đếm thời gian bằng cách sử dụng setInterval để chạy theo các khoảng thời gian đều đặn, đọc N hàng mỗi lần, thực hiện thao tác nào đó với chúng rồi thoát khỏi bộ đếm thời gian và cho phép bộ đếm thời gian chạy lại, khi tất cả các hàng đã được đọc sạch bằng cách dừng bộ đếm thời gian và đóng sổ làm việc đang mở |