Tôi có hai nguồn OLE DB cho một tệp Excel với hai trang tính khác nhau.
Bảng A và Bảng B.
Ô I6 của Sheet A chứa ngày tháng và tôi muốn kết hợp hai nguồn và thêm một cột vào Sheet B để đặt giá trị làm giá trị Ngày của Sheet A. Có thể làm như vậy không? Bất kỳ ý tưởng nào cũng hữu ích, cảm ơn bạn!
Tôi có hai nguồn OLE DB cho một tệp Excel có hai bảng tính khác nhau. Bảng tính A và Bảng tính B. Trang A ô I6 chứa một ngày và tôi muốn kết hợp hai nguồn này và thêm một cột trong trang B để đặt giá trị cho giá trị ngày của trang A. Có thể được không? Mọi ý tưởng sẽ hữu ích, cảm ơn!
Tôi đã thử tạo cùng một cột trong mỗi nguồn để UNION ALL Sheet A và Sheet B, nhưng kết quả không như tôi mong muốn.
Tôi đang cố gắng tạo cùng một cột trong mỗi nguồn để hợp nhất tất cả trang A và trang B, nhưng nó không trả về theo cách tôi muốn.
Bảng A (coi đây là ngày đăng ký thành viên của họ)
Bảng A (nghĩ rằng đây là ngày đăng ký thành viên của họ)
Tờ B
Hình B
Tên |
số điện thoại |
Ađam |
123345678 |
Đavít |
123345678 |
Mary |
123345678 |
Kết quả lý tưởng
kết quả lý tưởng
Tên |
số điện thoại |
Ngày |
Ađam |
123345678 |
2012-09-01 |
Đavít |
123345678 |
2012-09-01 |
Mary |
123345678 |
2012-09-01 |
Thêm câu trả lời
1. Sử dụng phương pháp này để đọc một vslue duy nhất vào một biến youtube.com/watch?v=UYDvldSnuE0 2. Bây giờ hãy sử dụng datacopy để sao chép tệp, nhưng thêm một cột được tính toán là biến mà bạn đã đặt ở bước 1. Nhưng thực sự SSIS không phải là công cụ phù hợp cho việc này.
1. Sử dụng phương pháp này để đọc một vslue vào biến youtube.com/watch? v=UYDvldSnuE0 2. Bây giờ hãy sao chép tệp bằng Sao chép dữ liệu, nhưng thêm cột được tính toán, đây là biến bạn đặt ở bước 1. Nhưng thực tế SSIS không phải là công cụ phù hợp cho mục đích này.
Một phương pháp thay thế là có 2 nguồn trong luồng dữ liệu của bạn và nối dữ liệu từ các nguồn đó thành một giá trị tùy ý (mà bạn có thể tạo ra bằng cách sử dụng phép biến đổi cột phái sinh).
Một cách tiếp cận khác là có hai nguồn trong luồng dữ liệu và nối dữ liệu từ các nguồn này dựa trên các giá trị tùy ý (có thể được tạo bằng cách sử dụng phép chuyển đổi Cột có nguồn gốc).
Khuyến nghị câu trả lời tuyệt vời
Theo thử nghiệm của tôi trên SSIS, bạn có thể thực hiện theo các bước sau:
Dựa trên thử nghiệm của tôi trong SSIS, bạn có thể thực hiện điều đó bằng các bước sau:
Nguồn OLE DB cho Trang tính A: Cấu hình Nguồn OLE DB để đọc dữ liệu từ Trang tính A. Trường quan trọng ở đây là ngày.
Nguồn Excel cho Trang tính B: Cấu hình Nguồn Excel khác để đọc dữ liệu từ Trang tính B.
Chuyển đổi dữ liệu cho Bảng tính A: Vì dữ liệu Excel thường được nhập dưới dạng DT_WSTR nên bạn có thể cần sử dụng phép chuyển đổi Chuyển đổi dữ liệu để chuyển đổi ngày từ Bảng tính A sang định dạng mà SSIS có thể xử lý (DT_DATE).
Recordset Destination cho Sheet A: Sử dụng Recordset Destination để lưu trữ một hàng dữ liệu từ Sheet A (ngày) trong một Biến SSIS. Bạn có thể tạo một Biến đối tượng mới cho mục đích này.
Thành phần tập lệnh làm phép biến đổi cho Sheet B: Đối với Nguồn Excel của Sheet B, hãy thêm một Thành phần tập lệnh hoạt động như một phép biến đổi. Trong Thành phần tập lệnh này, bạn có thể thêm một cột đầu ra mới (cho ngày) và đặt giá trị của nó thành ngày từ biến (lưu trữ ngày từ Sheet A). Bạn sẽ sử dụng Row. = Biến. cú pháp trong phương thức Input0_ProcessInputRow.
Đích OLE DB: Cuối cùng, bạn có thể ghi dữ liệu (bây giờ bao gồm cả ngày từ Trang tính A) vào đích mong muốn bằng cách sử dụng Đích OLE DB.
Bạn chỉ có một ngày, tốt hơn hết là lưu nó vào biến ngày trước:
Bạn chỉ có một ngày, tốt hơn hết là lưu nó vào biến ngày trước:
- Tạo một biến mới và gán ngày: 01.09.2012

2. Thêm một phép biến đổi cột được suy ra trong DFT và đặt cột mới có tên là 'Ngày' bằng với biến được xác định ở bước 1:
2. Thêm phép chuyển đổi Cột có nguồn gốc trong DFT và đặt cột mới có tên 'Ngày' bằng biến được xác định ở bước 1:


- Cuối cùng gửi nó đến đích OLEDB:

Thêm câu trả lời
Cảm ơn bạn rất nhiều vì câu trả lời của bạn, tôi tự hỏi liệu bạn có mẫu script nào không? Vì tôi chưa từng học C# trước đây.
Cảm ơn bạn rất nhiều vì câu trả lời của bạn, tôi tự hỏi liệu bạn có mẫu kịch bản không? Bởi vì tôi chưa bao giờ học C# trước đây.
Hoặc có cách nào thực hiện việc này bằng truy vấn SQL trong SSIS/SQL Server thay vì C# không?
Hoặc có thể đạt được điều này bằng cách sử dụng truy vấn SQL trong SSIS/SQL Server thay vì C#?
Tôi là một lập trình viên xuất sắc, rất giỏi!