Dưới đây là ví dụ có thể cung cấp cho bạn ý tưởng về những việc bạn có thể làm. Lý tưởng nhất là, trong một gói SSIS hoặc trong bất kỳ công việc ETL nào, bạn nên tính đến dữ liệu đó có thể không chính xác như những gì bạn muốn. Bạn cần phải thực hiện các bước thích hợp để xử lý dữ liệu không chính xác hoặc không hợp lệ có thể bật lên ngay bây giờ. Đó là lý do tại sao SSIS đưa ra rất nhiều nhiệm vụ Chuyển đổi trong Công cụ lưu lượng dữ liệu mà bạn có thể sử dụng để dọn sạch dữ liệu.
Trong trường hợp của bạn, bạn có thể sử dụng chuyển đổi Derived Column
hoặc Data conversion
để đạt được các yêu cầu của mình.
Ví dụ được tạo trong SSIS 2008 R2
. Nó cho thấy cách đọc một tệp phẳng chứa các ngày tháng và tải vào một bảng SQL.

Tôi tạo ra một bảng SQL đơn giản để nhập dữ liệu tập tin phẳng.

Trên gói SSIS, tôi có một người quản lý kết nối đến SQL và một cho tập tin phẳng. Kết nối tệp phẳng được cấu hình như hình dưới đây.




Trên gói SSIS, tôi đặt một Data Flow công tác trên tab Flow Control. Bên trong, nhiệm vụ Dòng dữ liệu, tôi có Nguồn tệp phẳng, Chuyển đổi cột có nguồn gốc và Điểm đến OLE DB. Vì nguồn tập tin Phẳng và đích OLE DB rất đơn giản, tôi sẽ để chúng ở đây.Chuyển đổi có nguồn gốc tạo ra một cột mới với biểu thức (DT_DBDATE)SmallDate
. Lưu ý rằng bạn cũng có thể sử dụng chuyển đổi Chuyển đổi dữ liệu để thực hiện tương tự. Cột mới này SmallDateTimeValue sẽ được ánh xạ tới cột cơ sở dữ liệu trong Đích đến OLE DB.

Nếu bạn thực hiện gói thầu này, nó sẽ thất bại bởi vì không phải tất cả các giá trị trong các tập tin có giá trị.

Lý do tại sao nó không thành công trong trường hợp của bạn là vì dữ liệu không hợp lệ được chèn trực tiếp vào bảng. Trong trường hợp của bạn, bảng sẽ ném một ngoại lệ khiến cho gói bị lỗi. Trong ví dụ này, gói bị lỗi vì cài đặt mặc định trên biến đổi cột có nguồn gốc là không thành công nếu có bất kỳ lỗi nào. Vì vậy, hãy đặt một chuyển đổi giả để chuyển hướng các hàng lỗi. Chúng tôi sẽ chuyển đổi Multicast cho mục đích này. Nó sẽ không thực sự làm gì cả. Lý tưởng nhất, bạn nên chuyển hướng các hàng lỗi đến một bảng khác bằng cách sử dụng đích OLE DB hoặc thành phần đích khác do bạn chọn để bạn có thể phân tích dữ liệu gây ra lỗi.
Kéo mũi tên màu đỏ từ Chuyển đổi có nguồn gốc và kết nối nó với chuyển đổi Đa hướng. Thao tác này sẽ bật lên hộp thoại Định cấu hình lỗi. Thay đổi các giá trị dưới cột Lỗi và cắt ngắn từ Thành phần lỗi thành Redirect row
. Điều này sẽ chuyển hướng bất kỳ hàng lỗi nào đến quá trình chuyển đổi Multicast và sẽ không nhận được vào các bảng.

Bây giờ, nếu chúng tôi thực hiện gói, nó sẽ chạy thành công. Lưu ý số hàng được hiển thị theo mỗi hướng.

Đây là những dữ liệu mà có vào bảng. Chỉ có 2 hàng là hợp lệ. Bạn có thể xem ảnh chụp màn hình đầu tiên cho thấy dữ liệu trong tệp và bạn chỉ có thể thấy 2 hàng là hợp lệ.
Hy vọng cung cấp cho bạn ý tưởng để triển khai yêu cầu của bạn trong gói SSIS.

Ảnh chụp màn hình thật tuyệt vời, +1 – eddiegroves