Làm cách nào để tải nhiều trang tính Excel vào bảng SQL Server trong gói SSIS?

Tôi có một tệp excel có nhiều trang tính và tôi cần nhập những dữ liệu đó từ mỗi trang tính riêng biệt sang một bảng SQL riêng bằng SSIS. Bởi vì mục đích của tôi là tạo dự án dạng bảng bằng cách sử dụng cơ sở dữ liệu máy chủ SQL. Vì vậy, trong bài viết này, tôi dự định thảo luận về cách nhập dữ liệu từ nhiều bảng excel vào nhiều bảng riêng biệt

Trong ví dụ của tôi, tôi có tệp nguồn dưới dạng excel và có dữ liệu tài chính như sau

Giải pháp

Đầu tiên, điều bạn muốn làm là tạo cơ sở dữ liệu SQL với các bảng cho từng trang tính riêng biệt. Hãy nhớ rằng cấu trúc bảng chính xác phải giống với bảng mà chúng ta sẽ tải

Sau đó, tạo gói SSIS và đổi tên thành “LoadingMultipleExcelSheets. dtsx”

Bây giờ chúng ta phải tải dữ liệu. Để làm được điều đó, chúng ta cần một "Nhiệm vụ luồng dữ liệu". Kéo tác vụ luồng dữ liệu từ Hộp công cụ SSIS –> Mục ưa thích –> Tác vụ luồng dữ liệu

Trong tác vụ luồng dữ liệu, chúng ta sẽ đọc dữ liệu từ “Tệp nguồn Excel”. Nhấp đúp vào tác vụ luồng dữ liệu và kéo nguồn Excel từ Thanh công cụ SSIS –> Nguồn khác –> Nguồn Excel

Sau đó, chúng ta phải tạo kết nối cho tệp excel mà chúng ta sẽ tải như sau

Sau đó, chúng ta cần đưa ra một điểm đến. Đối với điều đó, hãy chuyển đến Hộp công cụ SSIS -> Điểm đến khác và chọn điểm đến theo ý muốn. Ở đây tôi chọn OLE DB Destination để lưu trữ tập dữ liệu của mình. Trong đích OLE DB, chúng tôi phải tạo lại kết nối

Bây giờ chúng ta phải tạo kết nối giữa nguồn Excel và đích OLE DB. Nhưng tôi đã nhận lỗi. Do kiểu dữ liệu của cột Nhập và cột Đích khác nhau. Vì vậy, tôi đã sử dụng chuyển đổi dữ liệu. Sau đó, nhấp đúp vào đó và thay đổi kiểu dữ liệu và Bí danh đầu ra như sau và nhấp vào ok

Bây giờ, một lần nữa đi đến OLE DB Destination và ánh xạ lại với kiểu dữ liệu chính xác. Bây giờ phần này là ok

Sau đó, chúng ta phải tạo một tác vụ luồng dữ liệu khác để tải một bảng excel khác. Ở đây cũng làm điều tương tự đã làm trước đó. Kéo tác vụ luồng dữ liệu và đưa nguồn excel vào đó

Vào đây không cần tạo lại kết nối mới. Chúng tôi sử dụng cùng một kết nối mà chúng tôi đã tạo trước đó và chúng tôi chỉ chọn tên trang tính

Sau đó, kéo đích OLE DB và chọn bảng có liên quan từ danh sách bảng. Ở đây tôi sử dụng cùng một cơ sở dữ liệu. Nhưng nếu bạn muốn sử dụng nhiều cơ sở dữ liệu, một lần nữa bạn phải tạo kết nối OLE DB mới

Một lần nữa, chúng tôi muốn kéo chuyển đổi dữ liệu và thay đổi loại dữ liệu và Bí danh đầu ra như sau và nhấp vào ok. Nếu không, chúng tôi sẽ gặp lỗi khi tạo kết nối giữa nguồn Excel với đích OLE Db

Tôi có ba trang excel trong tệp excel của mình. Vì vậy, tôi đã làm quy trình tương tự cho bảng excel thứ ba. Sau khi định cấu hình chính xác ánh xạ và đích, chúng ta cần chạy gói. Sau đó tải dữ liệu vào nguồn dữ liệu từ nhiều bảng excel

Tôi được yêu cầu nhập dữ liệu vào SQL từ nhiều [15] tệp Excel và mỗi tệp Excel chứa dữ liệu lịch sử với hơn 200.000 hàng

Tôi có thể làm điều đó với 15 luồng dữ liệu và kết nối Excel trong SSIS, nhưng tôi không muốn làm theo cách đó vì tôi muốn tìm một cách hiệu quả hơn là tạo 15 luồng dữ liệu và kết nối Excel. Tôi quá lười để tạo tất cả các luồng dữ liệu và kết nối Excel đó. Điều đó sẽ mất rất nhiều thời gian. Vì vậy, tôi Googled nó

Tôi đã tìm thấy nhiều bài báo, nhưng mỗi bài báo hơi khác nhau và sử dụng một cách tiếp cận khác để xử lý tình huống

Tôi đã làm theo các bước trong một số bài viết và video trên YouTube, nhưng tôi không gặp may. Mỗi khi có điều gì đó không ổn hoặc tôi đã bỏ lỡ điều gì đó. tôi gãi đầu

Sau một thời gian, tôi đã tìm ra cách để làm cho nó hoạt động và tôi muốn chia sẻ nó với mọi người để tiết kiệm thời gian của bạn

Dưới đây là hướng dẫn từng bước của tôi để tạo gói SSIS để nhập dữ liệu từ nhiều tệp Excel sang SQL chỉ với một luồng dữ liệu và một kết nối Excel

Ví dụ: tôi có hai tệp Excel tại C. \BI\SSIS\Nhập dữ liệu lịch sử\Tệp nguồn\Kiểm tra

Lưu ý rất quan trọng

Đảm bảo rằng mỗi tệp Excel có cùng một lược đồ

Ví dụ,

  1. Số cột
  2. Tên của tiêu đề cột
  3. Tên của các tab

Cách nhập nhiều tệp Excel vào SQL

  1. Mở Visual Studio
  2. Tạo một dự án mới

 

  1. Chọn Dự án Dịch vụ Tích hợp

 

  1. Tạo một biến
  • Tên. Đường dẫn tập tin
  • Loại dữ liệu. Chuỗi
  • Giá trị. trống

 

  1. Kéo và thả Bộ chứa vòng lặp Foreach vào Luồng điều khiển

 

  1. Nhấp chuột phải vào Vùng chứa vòng lặp Foreach sau đó nhấp vào Chỉnh sửa

 

  1. Vào Bộ sưu tập > Nhập đường dẫn thư mục > Nhập phần mở rộng tệp

Đảm bảo rằng Trình liệt kê là “Foreach File Enumerator” và Truy xuất tên tệp được đặt thành “Đủ điều kiện”

Làm cách nào để nhập nhiều tệp excel vào SQL Server bằng SSIS?

Tạo gói SSIS để nhập dữ liệu từ nhiều tệp Excel .
TẠO BẢNG [dbo]. [ Nhập dữ liệu SSIS][
[EmpID] [int] NULL,
[EmpName] [varchar][50] NULL,
[Nguồn] [nvarchar][50] NULL
] BẬT [CHÍNH]

Làm cách nào để xuất dữ liệu sang nhiều trang excel từ một bảng SQL Server trong gói SSIS?

Giải pháp. .
Bước 1. Tạo Gói SSIS mới và tạo Biến
CộtNameForGrouping. Cung cấp cột bạn muốn sử dụng để tạo dữ liệu trang tính
ExcelFileName. Cung cấp tên tệp excel bạn muốn tạo
Đường dẫn thư mục. Cung cấp Đường dẫn nơi bạn muốn tạo tệp excel

Làm cách nào để tải bảng excel cụ thể từ tệp excel sang bảng SQL Server?

Trình hướng dẫn nhập và xuất .
Trong SQL Server Management Studio, hãy kết nối với một phiên bản của Công cụ cơ sở dữ liệu máy chủ SQL
Mở rộng cơ sở dữ liệu
Nhấp chuột phải vào cơ sở dữ liệu
Trỏ tới Nhiệm vụ
Chọn Nhập dữ liệu hoặc Xuất dữ liệu

Bạn sẽ nhập nhiều trang excel vào một khung dữ liệu như thế nào?

Nhận danh sách tên của tất cả các trang tính, sử dụng openpyxl hoặc pandas. Lặp lại qua từng trang tính, phân tích cú pháp từng trang dưới dạng Khung dữ liệu Pandas và nối từng Khung dữ liệu vào danh sách khác. Hợp nhất tất cả vào một DataFrame duy nhất bằng cách sử dụng pd. concat

Chủ Đề