Đề xuất nhập dữ liệu hàng loạt


8

Chúng tôi đang làm việc trên một dự án yêu cầu nhập dữ liệu từ bảng tính Excel hàng ngày. Dữ liệu sẽ được nhập từ mẫu xác định trước và chúng tôi nghĩ gì, trước tiên chúng tôi sẽ tải lên dữ liệu trong bảng tạm thời và thực hiện thao tác làm sạch (xóa thông tin không cần thiết, thêm hàng mới trong bảng cha và lấy FK của chúng, v.v.).

  • Tôi cần biết là có bất kỳ công cụ hoặc tiện ích nào có thể làm giảm nỗ lực của chúng tôi.
  • Cách tốt nhất để ghi lại số lượng lớn từ các nguồn khác nhau (chủ yếu từ bảng tính Excel) là gì?

Ứng dụng chúng tôi sẽ tạo là ứng dụng dựa trên web nơi người dùng có quyền kiểm soát hạn chế đối với máy chủ SQL. Người dùng sẽ tải tệp lên thông qua trình duyệt và phần còn lại của thao tác sẽ được thực hiện ở phía máy chủ.
kodvavi

Câu trả lời:


9

SSIS là cách để tiếp tục điều này. Nếu bạn chưa bao giờ xây dựng gói trước đó và bạn biết các tệp nguồn của mình (cũng đọc: bảng tính) sẽ luôn giống nhau, thì điều bạn có thể làm là sử dụng thuật sĩ Nhập / Xuất của SQL Server. Trong SSMS, nhấp chuột phải vào cơ sở dữ liệu và chọn Nhiệm vụ> Nhập (hoặc Xuất) Dữ liệu ...

Điều này sẽ mở một trình hướng dẫn hướng dẫn bạn qua các bước chọn tệp nguồn / đích cũng như các bảng đích (có thể tạo các bảng nếu chúng chưa tồn tại). Bạn sẽ phải lập bản đồ các cột đi đâu nhưng trình hướng dẫn khá dễ dàng. Khi bạn hoàn thành, nó sẽ yêu cầu bạn chạy hoặc lưu gói (hoặc thực hiện cả hai). Lưu gói. Điều này sẽ lưu gói của bạn ở định dạng .dtsx nếu bạn chọn lưu nó vào hệ thống tệp. Tùy chọn khác của bạn là lưu gói trong chính SQL Server, sau đó sẽ giữ chúng trong cơ sở dữ liệu hệ thống msdb.

Khi bạn đã lưu gói của mình, bạn có thể tạo công việc Đại lý SQL để chạy gói đó theo định kỳ (bạn chỉ định lịch biểu) để bạn luôn có thể tải các bảng của mình bằng SSIS. Nếu bạn muốn tìm hiểu thêm về SSIS, hãy xem hội thảo trên web miễn phí của công ty tôi (chúng tôi bao gồm toàn bộ ngăn xếp BI) tại PragmaticWorks


Trên thực tế, chúng tôi đang tạo ứng dụng dựa trên web để chúng tôi sẽ không cho phép người dùng truy cập trực tiếp vào giao diện cơ sở dữ liệu. Ứng dụng của chúng tôi trước tiên nhập tệp và sau đó chúng tôi thực hiện phần còn lại của hoạt động thông qua ứng dụng của chúng tôi.
kodvavi

1
@kodvavi; bạn có thể gọi các gói SSIS thông qua mã .net ...
gbn

1
@kodvavi, tôi không chắc ý của bạn về câu nói đó. Các ứng dụng web thường không có công việc bắt đầu tải dữ liệu dù sao thì tại sao điều đó lại quan trọng? Phần ETL của cơ sở dữ liệu và giao diện ứng dụng web là hai thứ khác nhau.
SQLChicken

Tôi biết rằng nhiều người khởi xướng các gói SSIS từ web nhưng với tôi dường như đó là một ý tưởng tồi, với mức độ có thể sai với các nguồn excel.
Nick.McDilyn

5

Đây là một ví dụ về cách nhập dữ liệu từ excel vào SQL Server. Một trong những vấn đề chính là đảm bảo bạn sử dụng thành phần Chuyển đổi dữ liệu giữa Excel và SQL Server và thực hiện chuyển đổi từ NVARCHAR sang VARCHAR vì excel coi dữ liệu là NVARCHAR.

http://www.mssqltips.com/tip.asp?tip=1393


nvarchar vẫn ổn với chúng tôi vì cơ sở dữ liệu của chúng tôi sẽ hỗ trợ các thuộc tính đa ngôn ngữ. Tôi đang xem xét các topis. thanx
kodvavi


0

Tôi sẽ không loại bỏ bất cứ thứ gì từ mr. gbn,Sankar Reddy,SQLChicken. Nhưng tôi muốn nói rằng có một cách đơn giản để nhập bảng excel trong SQL là thông qua TSQL 'OPENWAYSET'.

Ví dụ để nhập userbảng excel trong TestDBCơ sở dữ liệu. Giả sử rằng tôi đã tạo [user]bảng trong TestDBCơ sở dữ liệu. Sau đó, TSQL mở đơn giản sẽ được đề cập dưới đây như thế

Use TestDB;
    Go
    select * INTO [User]
    from openrowset('MICROSOFT.ACE.OLEDB.12.0',
    'Excel 12.0; Database=C:\TestFolder\User.xlsx; HDR=yes; IMEX=1',
    'select * from [User$]');
    Go

Lưu ý: Tôi đang viết TSQL này trong môi trường SQL Server 2012. Đối với mỗi OLEDBnhà cung cấp máy chủ openbowet SQL sẽ khác nhau. Vui lòng kiểm tra máy chủ OLEDBliên kết-> nhà cung cấp được hỗ trợ cho phiên bản máy chủ SQL đó. Trong trường hợp của tôi nó là ACE.OLEDB.12.0. Trước khi nhập hãy chắc chắn rằng đã Allow inprocessđược kiểm tra hay không của MICROSOFT.ACE.OLEDB.12.0nhà cung cấp đó . Nó nên được kiểm tra như thế nhập mô tả hình ảnh ở đây

Lưu ý: - Nó đã được thử nghiệm trong môi trường sản xuất. Nhưng trong trường hợp của bạn mà không cần kiểm tra trong môi trường thử nghiệm. Đừng trực tiếp chạy trong môi trường sản xuất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.