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

1
mkdir csvimport
2
cd csvimport
3
npm 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

1
npm 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ờ

1
mkdir 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.  

1
mkdir csvimport
1
2
mkdir csvimport
3
3
mkdir csvimport
5
mkdir csvimport
6
mkdir csvimport
7
mkdir csvimport
8
mkdir csvimport
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
cd csvimport
0
cd csvimport
1
cd 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

1
cd 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

1
cd csvimport
6
2
cd csvimport
8
3
3
0
mkdir csvimport
6
3
2
mkdir csvimport
8
3
4
2
0
3
6
2
1
3
8
2
3
npm init -y
0
2
5
npm init -y
2
2
7
npm init -y
4
2
9
npm init -y
6
cd csvimport
1
npm init -y
8
npm init -y
9
1
0
1
1
1
2
1
3
1
4
1
5_______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

1
1
8

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ả

1
npm install express --save
0
2
3
npm install express --save
3
mkdir csvimport
6
npm install express --save
5
mkdir csvimport
8
npm install express --save
7
2
0
npm install express --save
9
2
1
1
1
2
3
1
3
2
5
1
5
2
7
1
7
2
9
1
9
cd csvimport
1
mkdir csvimport
01
npm init -y
9
mkdir csvimport
03
1
1
mkdir csvimport
05
1
3
mkdir csvimport
07
1
5
mkdir csvimport
09
mkdir csvimport
00
mkdir csvimport
01
mkdir csvimport
02
mkdir csvimport
03
mkdir csvimport
04
mkdir csvimport
05
mkdir csvimport
06
mkdir csvimport
07
mkdir csvimport
08
mkdir csvimport
09
mkdir csvimport
10
mkdir csvimport
11
mkdir csvimport
12
mkdir csvimport
13
mkdir csvimport
14
1
9
mkdir csvimport
16
mkdir csvimport
17
mkdir csvimport
18
mkdir csvimport
05
mkdir csvimport
20
mkdir csvimport
07
mkdir csvimport
22
mkdir csvimport
09
mkdir csvimport
24
mkdir csvimport
01
mkdir csvimport
26
mkdir csvimport
27
mkdir csvimport
28
mkdir csvimport
05
mkdir csvimport
30
mkdir csvimport
07
mkdir csvimport
32
mkdir csvimport
09
mkdir csvimport
34
mkdir csvimport
35
mkdir csvimport
36
mkdir csvimport
13
mkdir csvimport
38
1
9
mkdir csvimport
40
mkdir csvimport
41
mkdir csvimport
42
mkdir csvimport
05
mkdir csvimport
44
mkdir csvimport
07
mkdir csvimport
46
mkdir csvimport
09
mkdir csvimport
48
mkdir csvimport
01
mkdir csvimport
50
mkdir csvimport
51
mkdir csvimport
52
mkdir csvimport
05
mkdir csvimport
54
mkdir csvimport
07
mkdir csvimport
56
mkdir csvimport
09
mkdir csvimport
58
mkdir csvimport
59
mkdir csvimport
60
mkdir 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
____185
2
mkdir 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

1
mkdir csvimport
89
2
3
mkdir csvimport
92
mkdir csvimport
6
mkdir csvimport
8
mkdir csvimport
95
2
0
mkdir csvimport
97
2
1
mkdir csvimport
99
2
3
2
01
2
5
2
03
2
7
2
05
2
9
2
07
cd csvimport
1
2
09
npm init -y
9
1
1
2
12
1
3
1
5
2
15
mkdir csvimport
00
2
17
mkdir csvimport
02
mkdir csvimport
04
2
20
mkdir csvimport
06
mkdir csvimport
08
2
23

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

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

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

1
2
27____2____229
3
2
31
mkdir csvimport
6
2
33

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

1
mkdir csvimport
1
2
_______13
3
mkdir csvimport
5
mkdir csvimport
6
mkdir csvimport
85
mkdir csvimport
8
2
43
2
0
2
1
mkdir csvimport
9
2
3
2
5
2
2
2
7
2
4
2
9
2
6
cd csvimport
1
mkdir csvimport
87
npm init -y
9
2
57
1
1
1
3
2
60
1
5__
mkdir csvimport
00
2
8_____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 đó

1
2
71
2
npm install express --save
0
3
2
75
mkdir csvimport
6
mkdir csvimport
8
2
78
2
0
2
80
2
1
2
82
2
3
2
84
2
5
2
86
2
7
2
9
2
89
cd csvimport
1
2
91
npm init -y
9
2
93
1
1
2
95
1
3
2
97
1
5
2
99
mkdir csvimport
00
cd csvimport
01
mkdir csvimport
02
cd csvimport
03
mkdir csvimport
04
cd csvimport
05
mkdir csvimport
06
cd csvimport
07
mkdir csvimport
08
cd csvimport
09
mkdir csvimport
10
cd csvimport
01
mkdir csvimport
12
cd csvimport
13
mkdir csvimport
14
cd csvimport
15
mkdir csvimport
16
cd csvimport
17
mkdir csvimport
18
cd csvimport
19
mkdir csvimport
20
cd csvimport
07
mkdir csvimport
22
cd csvimport
23
mkdir csvimport
24
cd csvimport
25
mkdir csvimport
26
2
23

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