Cách nhập tệp CSV trong mongodb bằng Node js

Đó là bởi vì bạn chưa cung cấp đường dẫn CSV của mình. Một cách truyền thống mà tôi đã sử dụng trong các dự án nút của mình là giữ tệp tuyến đường khác và chuyển tệp csv của bạn ở dạng dữ liệu biểu mẫu rồi truy cập tệp đó dưới dạng yêu cầu. các tập tin

Đảm bảo bạn tạo trình bao bọc cho chuyển đổi CSV của mình

chủ đề này là một chủ đề thực sự thú vị đối với tôi. Việc chấp nhận đầu vào của người dùng và lưu một bản ghi vào cơ sở dữ liệu của bạn là điều khá phổ biến trong nhiều ứng dụng web. Nhưng còn khi người dùng của bạn (hoặc bạn) muốn thực hiện nhiều thao tác chèn trong một lệnh thì sao?

Trong bài viết này, chúng tôi sẽ trình bày cách tạo mẫu CSV và biểu mẫu để tải tệp CSV lên cũng như cách phân tích cú pháp CSV thành Mô hình Mongoose sẽ được lưu vào cơ sở dữ liệu MongoDB

Bài viết này giả định rằng bạn đã có hiểu biết cơ bản về Mongoose và cách nó tương tác với MongoDB. Nếu không, tôi khuyên bạn nên đọc Giới thiệu về Mongoose cho MongoDB và Node. bài viết js đầu tiên. Bài viết này mô tả cách Mongoose tương tác với MongoDB bằng cách tạo các Lược đồ được gõ mạnh mà Mô hình được tạo từ đó. Nếu bạn đã hiểu rõ về Mongoose, thì hãy tiếp tục

Bắt đầu

Để bắt đầu, bạn sẽ khởi tạo một Nút mới. ứng dụng js. Trong dấu nhắc lệnh, hãy điều hướng đến nơi bạn muốn lưu trữ Nút của mình. js và thực hiện các lệnh sau

1mkdir csvimport 2cd csvimport 3npm init -y

Sử dụng cờ cd csvimport 28 có nghĩa là dự án được khởi tạo với các giá trị mặc định, vì vậy ứng dụng sẽ bắt đầu với chỉ mục. js. Trước khi tạo và phân tích tệp CSV, trước tiên chúng tôi cần thực hiện một số thiết lập ban đầu. Chúng tôi muốn biến ứng dụng này thành một ứng dụng web; . Trong dấu nhắc lệnh của bạn, hãy cài đặt Express bằng cách chạy lệnh sau

1npm install express --save

Vì ứng dụng web này sẽ chấp nhận tệp thông qua biểu mẫu web, nên chúng tôi cũng sẽ sử dụng gói phụ Express Tải lên tệp nhanh. Hãy cài đặt ngay bây giờ

1mkdir csvimport 0

Chúng tôi đã thực hiện đủ cấu hình ban đầu để thiết lập ứng dụng web và tạo một trang web cơ bản sẽ tạo biểu mẫu tải tệp lên

Trong thư mục gốc, tạo một chỉ mục. js và thêm đoạn mã sau. Tập tin này thiết lập máy chủ web.  

1mkdir csvimport 12mkdir csvimport 33mkdir csvimport 5mkdir csvimport 6mkdir csvimport 7mkdir csvimport 8mkdir csvimport 920212223242526272829cd csvimport 0cd csvimport 1cd csvimport 2

Tệp này nhập các thư viện Express và Express File Upload, định cấu hình ứng dụng web để sử dụng Tải lên tệp và lắng nghe trên cổng 8080. Nó cũng tạo một tuyến đường sử dụng Express tại "/", đây sẽ là trang đích mặc định cho ứng dụng web. Tuyến đường này trả về một chỉ mục. tệp html chứa biểu mẫu web sẽ cho phép người dùng tải tệp CSV lên

Bạn có thể khởi động máy chủ web của mình bằng cách chạy lệnh trong thiết bị đầu cuối của mình

1cd csvimport 4

Bạn sẽ nhận được thông báo trong Máy chủ đầu cuối của mình bắt đầu trên cổng 8080. Điều này có nghĩa là bạn đã kết nối thành công với máy chủ web

Trong thư mục gốc, tạo một chỉ mục. tệp html. Tệp này tạo biểu mẫu để tải tệp CSV lên

1cd csvimport 62cd csvimport 8330mkdir csvimport 632mkdir csvimport 8342036213823npm init -y 025npm init -y 227npm init -y 429npm init -y 6cd csvimport 1npm init -y 8npm init -y 9101112131415_______06

Tệp HTML này chứa hai điều quan trọng

  1. Một liên kết đến /template, khi được nhấp vào, sẽ tải xuống một mẫu CSV có thể điền thông tin cần nhập
  2. Một biểu mẫu có cd csvimport 29 được đặt thành cd csvimport 30 và trường nhập liệu có loại cd csvimport 31 chấp nhận các tệp có. tiện ích csv. cd csvimport 30 là phương pháp mã hóa được sử dụng trong HTML khi biểu mẫu chứa tệp tải lên.  

Khi bạn truy cập http. //máy chủ cục bộ. 8080/ bạn sẽ thấy biểu mẫu được tạo trước đó

Như bạn có thể nhận thấy, HTML tham chiếu đến một mẫu Tác giả. Nếu bạn đọc bài viết Giới thiệu về Mongoose, Lược đồ tác giả đã được tạo. Trong bài viết này, bạn sẽ tạo lại Lược đồ này và cho phép người dùng nhập hàng loạt bộ sưu tập tác giả vào cơ sở dữ liệu MongoDB. Chúng ta hãy xem Lược đồ tác giả. Tuy nhiên, trước khi chúng tôi làm điều đó, có lẽ bạn đã đoán ra—chúng tôi cần cài đặt gói Mongoose

118

Tạo lược đồ và mô hình

Với Mongoose đã được cài đặt, hãy tạo một tác giả mới. js sẽ xác định lược đồ và mô hình tác giả

1npm install express --save 023npm install express --save 3mkdir csvimport 6npm install express --save 5mkdir csvimport 8npm install express --save 720npm install express --save 921112313251527172919cd csvimport 1mkdir csvimport 01npm init -y 9mkdir csvimport 0311mkdir csvimport 0513mkdir csvimport 0715mkdir csvimport 09mkdir csvimport 00mkdir csvimport 01mkdir csvimport 02mkdir csvimport 03mkdir csvimport 04mkdir csvimport 05mkdir csvimport 06mkdir csvimport 07mkdir csvimport 08mkdir csvimport 09mkdir csvimport 10mkdir csvimport 11mkdir csvimport 12mkdir csvimport 13mkdir csvimport 1419mkdir csvimport 16mkdir csvimport 17mkdir csvimport 18mkdir csvimport 05mkdir csvimport 20mkdir csvimport 07mkdir csvimport 22mkdir csvimport 09mkdir csvimport 24mkdir csvimport 01mkdir csvimport 26mkdir csvimport 27mkdir csvimport 28mkdir csvimport 05mkdir csvimport 30mkdir csvimport 07mkdir csvimport 32mkdir csvimport 09mkdir csvimport 34mkdir csvimport 35mkdir csvimport 36mkdir csvimport 13mkdir csvimport 3819mkdir csvimport 40mkdir csvimport 41mkdir csvimport 42mkdir csvimport 05mkdir csvimport 44mkdir csvimport 07mkdir csvimport 46mkdir csvimport 09mkdir csvimport 48mkdir csvimport 01mkdir csvimport 50mkdir csvimport 51mkdir csvimport 52mkdir csvimport 05mkdir csvimport 54mkdir csvimport 07mkdir csvimport 56mkdir csvimport 09mkdir csvimport 58mkdir csvimport 59mkdir csvimport 60mkdir csvimport 13________

Với lược đồ và mô hình của tác giả đã được tạo, hãy chuyển hướng và tập trung vào việc tạo mẫu CSV có thể tải xuống bằng cách nhấp vào liên kết mẫu. Để hỗ trợ tạo mẫu CSV, chúng tôi sẽ sử dụng gói json2csv. Gói npm này c chuyển đổi JSON thành CSV với tiêu đề cột và kết thúc dòng phù hợp.

1____183

Bây giờ bạn sẽ cập nhật chỉ mục đã tạo trước đó. js để bao gồm một tuyến đường mới cho /template. Bạn sẽ thêm mã mới này cho tuyến mẫu vào chỉ mục đã tạo trước đó. tập tin js

1____1852mkdir csvimport 87

Điều đầu tiên mã này làm là bao gồm một mẫu mới. js (sẽ được tạo tiếp theo) và tạo một route cho /template. Lộ trình này sẽ gọi hàm cd csvimport 33 trong mẫu. tập tin js

Với máy chủ Express được cập nhật để bao gồm tuyến đường mới, hãy tạo mẫu mới. tập tin js

1mkdir csvimport 8923mkdir csvimport 92mkdir csvimport 6mkdir csvimport 8mkdir csvimport 9520mkdir csvimport 9721mkdir csvimport 9923201252032720529207cd csvimport 1209npm init -y 9112121315215mkdir csvimport 00217mkdir csvimport 02mkdir csvimport 04220mkdir csvimport 06mkdir csvimport 08223

Tệp này trước tiên bao gồm gói cd csvimport 34 đã cài đặt. Sau đó, nó tạo và xuất một hàm cd csvimport 33. Chức năng này chấp nhận các đối tượng yêu cầu và phản hồi từ máy chủ Express

Bên trong hàm, bạn tạo một mảng các trường mà bạn muốn đưa vào mẫu CSV. Điều này có thể được thực hiện theo một trong hai cách. Cách đầu tiên (được thực hiện trong hướng dẫn này) là tạo một danh sách tĩnh các trường sẽ được đưa vào mẫu. Cách thứ hai là tạo động danh sách các trường bằng cách trích xuất các thuộc tính từ lược đồ tác giả

Cách thứ hai là sử dụng đoạn mã sau

1____225

Sẽ là một ý tưởng hay nếu sử dụng phương pháp động, nhưng sẽ hơi phức tạp khi bạn không muốn đưa nhiều thuộc tính từ Lược đồ vào mẫu CSV. Trong trường hợp này, mẫu CSV của chúng tôi không bao gồm các thuộc tính cd csvimport 36 và cd csvimport 37 vì các thuộc tính này sẽ được điền thông qua mã. Tuy nhiên, nếu bạn không có trường muốn loại trừ, phương thức động cũng sẽ hoạt động

Tạo Mẫu CSV

Với mảng các trường được xác định, bạn sẽ sử dụng gói cd csvimport 34 để tạo mẫu CSV từ đối tượng JavaScript của mình. Đối tượng cd csvimport 39 này sẽ là kết quả của route này

Và cuối cùng, sử dụng thuộc tính cd csvimport 40 từ máy chủ Express, hai thuộc tính tiêu đề sẽ được đặt để buộc tải xuống tác giả. tệp csv

Tại thời điểm này, nếu bạn chạy ứng dụng Node của mình và điều hướng đến http. //máy chủ cục bộ. 8080/ trên trình duyệt web của bạn, biểu mẫu web sẽ được hiển thị với liên kết để tải xuống mẫu. Nhấp vào liên kết để tải xuống mẫu sẽ cho phép bạn tải xuống các tác giả. tệp csv. Tệp này sẽ được điền trước khi được tải lên

Mở tệp mẫu trong Microsoft Excel, tệp CSV phải được điền như vậy

Dưới đây là một ví dụ về tệp CSV đã điền

1227____2____2293231mkdir csvimport 6233

Ví dụ này khi tải lên sẽ tạo ra ba tác giả

Các mảnh ghép bắt đầu ghép lại với nhau và tạo thành một bức tranh. Hãy chuyển sang phần thịt và khoai tây của ví dụ này và phân tích cú pháp tệp CSV đó. chỉ mục. js yêu cầu một số cập nhật để kết nối với MongoDB và tạo một tuyến POST mới sẽ chấp nhận tệp tải lên

1mkdir csvimport 12_______133mkdir csvimport 5mkdir csvimport 6mkdir csvimport 85mkdir csvimport 82432021mkdir csvimport 923252227242926cd csvimport 1mkdir csvimport 87npm init -y 9257111326015__mkdir csvimport 0028_____03_____12

Với kết nối cơ sở dữ liệu và định tuyến POST mới được định cấu hình, đã đến lúc phân tích cú pháp tệp CSV. May mắn thay, có một số thư viện tuyệt vời hỗ trợ công việc này. Đối với hướng dẫn này, chúng tôi sẽ sử dụng gói cd csvimport 41 có thể được cài đặt bằng lệnh sau

_______269

Tuyến POST được tạo tương tự như tuyến mẫu, gọi hàm cd csvimport 42 từ quá trình tải lên. tập tin js. Không cần thiết phải đặt các chức năng này trong các tệp riêng biệt;

gửi dữ liệu

Và cuối cùng, hãy tạo tệp tải lên. js chứa hàm cd csvimport 42 được gọi khi gửi biểu mẫu đã tạo trước đó

12712npm install express --save 03275mkdir csvimport 6mkdir csvimport 8278202802128223284252862729289cd csvimport 1291npm init -y 9293112951329715299mkdir csvimport 00cd csvimport 01mkdir csvimport 02cd csvimport 03mkdir csvimport 04cd csvimport 05mkdir csvimport 06cd csvimport 07mkdir csvimport 08cd csvimport 09mkdir csvimport 10cd csvimport 01mkdir csvimport 12cd csvimport 13mkdir csvimport 14cd csvimport 15mkdir csvimport 16cd csvimport 17mkdir csvimport 18cd csvimport 19mkdir csvimport 20cd csvimport 07mkdir csvimport 22cd csvimport 23mkdir csvimport 24cd csvimport 25mkdir csvimport 26223

Khá một chút đang xảy ra trong tập tin này. Ba dòng đầu tiên bao gồm các gói cần thiết sẽ được yêu cầu phân tích cú pháp và lưu dữ liệu CSV

Tiếp theo, hàm cd csvimport 42 được xác định và xuất để chỉ mục sử dụng. tập tin js. Bên trong chức năng này là nơi phép thuật diễn ra

Đầu tiên, hàm kiểm tra xem có một tệp chứa trong phần thân yêu cầu không. Nếu không, một lỗi được trả về cho biết tệp phải được tải lên

Khi một tệp đã được tải lên, một tham chiếu đến tệp được lưu vào một biến có tên là cd csvimport 45. Điều này được thực hiện bằng cách truy cập mảng cd csvimport 46 và thuộc tính cd csvimport 31 trong mảng. Thuộc tính cd csvimport 31 khớp với tên của tên đầu vào tệp của tôi đã được xác định lần đầu trong chỉ mục. ví dụ html

Một mảng cd csvimport 49 trống sẽ được điền khi tệp CSV được phân tích cú pháp đã được tạo. Mảng này sẽ được sử dụng để lưu dữ liệu vào cơ sở dữ liệu

Thư viện cd csvimport 41 hiện được gọi bằng cách tận dụng hàm cd csvimport 51. Hàm này chấp nhận tệp CSV dưới dạng chuỗi. Chuỗi được trích xuất từ ​​​​thuộc tính cd csvimport 52. Thuộc tính cd csvimport 53 chứa nội dung của tệp CSV đã tải lên

Dòng tiếp theo bao gồm hai tùy chọn cho hàm cd csvimport 41. cd csvimport 55 và cd csvimport 56. Cả hai đều được đặt thành cd csvimport 57. Điều này cho thư viện biết rằng dòng đầu tiên của tệp CSV sẽ chứa các tiêu đề và các hàng trống sẽ bị bỏ qua

Với các tùy chọn được định cấu hình, chúng tôi thiết lập hai hàm nghe được gọi khi sự kiện cd csvimport 53 và sự kiện cd csvimport 59 được kích hoạt. Sự kiện cd csvimport 53 được gọi một lần cho mỗi hàng của tệp CSV. Sự kiện này chứa một đối tượng JavaScript của dữ liệu được phân tích cú pháp

Đối tượng được cập nhật để bao gồm thuộc tính cd csvimport 36 của lược đồ tác giả với một cd csvimport 62 mới. Đối tượng này sau đó được thêm vào mảng cd csvimport 49

Khi tệp CSV đã được phân tích cú pháp đầy đủ, sự kiện cd csvimport 59 được kích hoạt. Bên trong hàm gọi lại sự kiện, chúng ta sẽ gọi hàm cd csvimport 65 trên model tác giả, truyền mảng cd csvimport 49 cho nó

Nếu xảy ra lỗi khi cố lưu mảng, một ngoại lệ sẽ được đưa ra;

Lược đồ cơ sở dữ liệu phải tương tự như thế này

Nếu bạn muốn xem mã nguồn đầy đủ, bạn có thể kiểm tra kho lưu trữ GitHub với mã

Sự kết luận

Trong hướng dẫn này, chúng tôi chỉ tải lên một vài bản ghi. Nếu trường hợp sử dụng của bạn yêu cầu khả năng tải lên hàng nghìn bản ghi, bạn nên lưu các bản ghi thành các phần nhỏ hơn

Điều này có thể được thực hiện theo nhiều cách. Nếu tôi triển khai nó, tôi khuyên bạn nên cập nhật chức năng gọi lại cd csvimport 53 để kiểm tra độ dài của mảng tác giả. Khi mảng vượt quá độ dài xác định của bạn, e. g. 100, gọi hàm cd csvimport 68 trên mảng, sau đó đặt lại mảng thành trống. Điều này sau đó sẽ lưu các bản ghi trong khối 100. Đảm bảo rời khỏi cuộc gọi cd csvimport 65 cuối cùng trong chức năng gọi lại cd csvimport 59 để lưu các bản ghi cuối cùng

Vui thích

Bài đăng này đã được cập nhật với sự đóng góp từ Mary Okosun. Mary là nhà phát triển phần mềm có trụ sở tại Lagos, Nigeria, có chuyên môn về Node. js, JavaScript, MySQL và công nghệ NoSQL

Làm cách nào để tải lên tệp CSV trong nút js?

Cách nhập hoặc tải lên bản ghi CSV trong Cơ sở dữ liệu MySQL bằng cách sử dụng Express REST API trong Node Js .
Bước 1. Tạo ứng dụng nút
Bước 2. Cài đặt phụ thuộc NPM
Bước 3. Tạo bảng cơ sở dữ liệu
Bước 4. Xây dựng tệp máy chủ
Bước 5. Phục vụ ứng dụng nút

Làm cách nào để nhập tệp Excel trong MongoDB bằng Node js?

Nhập tệp Excel vào MongoDB bằng Node js + Express .
Bước 1 – Tạo ứng dụng Node Express js
Bước 2 – Cài đặt các mô-đun nút cần thiết
Bước 3 – Tạo mô hình
Bước 4 – Tạo biểu mẫu đánh dấu HTML tải lên tệp Excel
Bước 5 – Nhập mô-đun trong ứng dụng. js
Bước 6 – Khởi động máy chủ ứng dụng

Làm cách nào để nhập tệp CSV vào MongoDB bằng Python?

Chúng tôi sẽ sử dụng tên người dùng tệp CSV bằng phương thức DictReader(). Hàm DictReader() trả về một đối tượng trình đọc csv. Chúng tôi sẽ lặp lại (lặp) qua đối tượng trình đọc CSV và tạo dữ liệu JSON để chèn nhiều bản ghi vào cơ sở dữ liệu MongoDB. Cuối cùng, chúng ta sẽ chèn dữ liệu hàng JSON vào MongoDB bằng phương thức insert_many()

Làm cách nào để nhập tệp CSV trong MongoDB Atlas?

Bạn có thể sử dụng mongoimport để nhập dữ liệu từ tệp JSON hoặc tệp CSV vào cụm MongoDB Atlas. .
Trong phần Bảo mật của điều hướng bên trái, nhấp vào Truy cập cơ sở dữ liệu. Tab Người dùng cơ sở dữ liệu hiển thị
Nhấp vào Thêm người dùng cơ sở dữ liệu mới
Thêm người dùng quản trị Atlas

Chủ đề