01/10/2018, 01:02

Có cách nào để Save 300 dòng dữ liệu vào database từ asp.net mvc

Em đang làm một form có khả năng sẽ save 300 dòng dữ liệu hoặc hơn nữa. Em dùng Asp.net mvc. Em cho file 300 dòng rồi nhấp save cái là nó chuyển sang undefined luôn…! T_T Các thánh xin cho một con đường để thực hiện được ạ?

Quân viết 03:08 ngày 01/10/2018

đọc từng dòng rồi insert vào thôi, còn có lỗi gì thì post tử tế lên

Trần Hoàn viết 03:05 ngày 01/10/2018

Ý bạn là thế nào mình vẫn không hiểu rõ? Có phải là database của bạn có một trường XXX nào đó mà bạn dùng để chứa nội dung của file kia? Nếu bạn dùng SQL Server thì nên chọn kiểu dữ liệu NTEXT.

Và chạy lệnh này bằng C#:

UPDATE <Tên bảng>
SET <Tên cột> = 
    (SELECT  BulkColumn FROM OPENROWSET(BULK  N'<Đường dẫn file>', SINGLE_BLOB) AS x)
WHERE <ID = 2 chẳng hạn>

Ý tưởng của mình là từ việc thêm ảnh vào SQL Server, bạn có thể đọc tại đây: http://www.sqlhub.com/2009/08/insert-and-update-image-field-in-sql.html

Đẵng Nguyễn Quốc viết 03:16 ngày 01/10/2018

hàm save của mình làm như sau:

Đầu tiên mình, lấy toàn bộ dữ liệu từ grid trên partialview chuyển sang thành file json rồi trả về controller qua phương thức Post. Trong controller, mình chuyển dữ liệu kiểu json đó thành list rồi lấy dữ liệu từng dòng để save vào database… Mình chục dòng thì được mà 300 dòng thì bị out luôn… Nó báo lỗi HTTP 404 : không tìm thấy trang đó. Bạn hiểu ý của mình không?

Đẵng Nguyễn Quốc viết 03:12 ngày 01/10/2018

Không phải mình file của mình là file dữ liệu chữ số thôi, chứ không phải hình…! hihi

Quân viết 03:07 ngày 01/10/2018

thế thì phải xem lại kích thước của gói dữ liệu gửi lên, nên để server side xử lí dữ liệu luôn, tức là cho up nguyên file đó lên rồi server tự phân tích. Lỡ ng dùng cần save 3000 dòng hày 3 triệu dòng thì làm sao.

Đẵng Nguyễn Quốc viết 03:13 ngày 01/10/2018

Server đọc file mà save. Mình nghĩ đến cách đó. Nhưng người dùng họ up lên thấy ko vừa ý, họ sửa lại 1 trong 300, hay 3000 dòng thì khi save sẽ sai ngay.

Quân viết 03:14 ngày 01/10/2018

thế cụ thể implement của bạn giờ đang là như thế nào

Đẵng Nguyễn Quốc viết 03:16 ngày 01/10/2018

Hiện giờ, mình build được 1 trang để nhập dữ liệu,import file, show dữ liệu => chỉnh sửa gì đó rồi save dữ liệu.Nó okie khi dữ liệu vài ba , chục dòng, còn dữ liệu lớn như 300, 3000 dòng thì nó thông báo http 404. Vậy mình đang làm được tới đó. Cách làm save bằng cách đọc từng dòng từ file import mình nghĩ tới rồi, nhưng mà nó sẽ gặp trường hợp, họ muốn sửa lại dòng dữ liệu nào đó trong file 300,3000 dòng thì mình chưa kiếm được cách.

Quân viết 03:11 ngày 01/10/2018

nghĩa là bạn show 1 web interface cho người dùng thao tác với dữ liệu từ đâu đó, sau đó up lên web cho bạn thôi chứ gì,

  1. Bạn có thể lưu tạm dữ liệu vào 1 temp file trước khi up lên mà, sau đó up file đó lên, up xong thì xóa temp file đi (nếu thích). Vừa đảm bảo user k thao tác trực tiếp với data, hay cấu trúc data, vừa đảm bảo k dính limit của 1 POST request thông thường.
  2. Tương tự cách 1, nhưng send raw binary data thay vì send file bằng POST multi part.
Đẵng Nguyễn Quốc viết 03:15 ngày 01/10/2018

Ý bạn là lấy dữ liệu trên web cho vào file tạm nào đó, rồi send nó từ view qua controller rồi controller đọc file đó rồi save vô đúng ko?

Quân viết 03:17 ngày 01/10/2018

uh, thử xem, hơi rắc rối so với bình thường

Trần Hoàn viết 03:08 ngày 01/10/2018

Bạn thấy cái cách mình chỉ bạn up hình không? Thực chất nó không phải là up hình, mà là up file, rồi CSDL sẽ lưu trữ file đó dưới dạng binary data.

Giả sử bạn up hình thì CSDL chứa binary data của file chứa hình đó, và khi người dùng tải file đó về thì cũng phải convert sang bitmap hoặc mở file đó bằng phần mềm xem ảnh thì mới hiển thị hình được. Cách mình chỉ cho bạn là nó sẽ upload toàn bộ binary data của file 300 dòng đó vào CSDL, khi bạn tải về thì phải convert sang text, hoặc mở file đó lên bằng notepad

Bài liên quan
0