2012-04-23 25 views

Trả lời

51

Đây là gói mẫu được tạo bằng cách sử dụng SSIS 2008 R2 giải thích cách nhập tệp phẳng vào bảng cơ sở dữ liệu.

  • Tạo tệp phẳng có chiều rộng cố định có tên Fixed_Width_File.txt với dữ liệu như được hiển thị trong ảnh chụp màn hình. Ảnh chụp màn hình sử dụng Notepad ++ để hiển thị nội dung tập tin. Nó có khả năng hiển thị các ký tự đặc biệt như vận chuyển trở lại và nguồn cấp dữ liệu dòng. CR LF biểu thị các dấu phân tách hàng Trả lại vận chuyểnNguồn cấp dữ liệu.

Flat file data

  • Trong cơ sở dữ liệu máy chủ SQL, tạo ra một bảng tên dbo.FlatFile sử dụng kịch bản tạo được cung cấp dưới Scripts SQL phần.

  • Tạo gói SSIS mới và thêm trình quản lý kết nối OLE DB mới sẽ kết nối với cơ sở dữ liệu SQL Server. Giả sử rằng trình quản lý kết nối OLE DB được đặt tên là SQLServer.

Connection manager

  • Mở tab kiểm soát dòng chảy của gói, đặt một Data Flow công tác.

Data flow task

  • Bấm đúp vào các nhiệm vụ luồng dữ liệu và bạn sẽ được đưa đến tab luồng dữ liệu. Trên tab luồng dữ liệu, hãy đặt Nguồn tệp phẳng. Nhấp đúp vào nguồn tệp phẳng và Trình chỉnh sửa nguồn tệp phẳng sẽ xuất hiện. Nhấp vào nút Mới để mở Trình chỉnh sửa Trình quản lý Kết nối Tệp Phẳng .

  • Trên phần General của Nguồn Flat File Editor, nhập một giá trị trong tên người quản lý kết nối (nói Nguồn) và duyệt đến vị trí tập tin phẳng và chọn tập tin. Ví dụ này sử dụng tệp mẫu trong đường dẫn C:\temp\Fixed_Width_File.txt Nếu bạn có hàng tiêu đề trong tệp của mình, bạn có thể nhập giá trị 1 vào hàng Tiêu đề để bỏ qua hộp văn bản để bỏ qua hàng tiêu đề.

Flat file connection manager editor General

  • Bấm vào Cột phần. Thay đổi phông chữ theo lựa chọn của bạn, tôi đã chọn Chuyển phát nhanh mới để tôi có thể xem thêm dữ liệu với ít cuộn hơn. Nhập giá trị 69 vào hộp văn bản Độ rộng hàng. Giá trị này là tổng chiều rộng của tất cả các cột của bạn + 2 cho dấu tách hàng. Khi bạn đã đặt độ rộng hàng chính xác, bạn sẽ thấy dữ liệu tệp chiều rộng cố định một cách chính xác trên phần cột Dữ liệu nguồn. Bây giờ, bạn phải bấm vào các vị trí thích hợp để xác định giới hạn cột. Lưu ý các phần 4, 5, 6 và trong ảnh chụp màn hình dưới đây.

Flat file connection manager editor Columns

  • Bấm vào phần Advanced. Bạn sẽ nhận thấy 5 cột được tạo cho bạn tự động dựa trên các giới hạn cột mà chúng tôi đặt trên phần Cột trong bước trước đó. Cột thứ năm dành cho dấu tách hàng.

Flat file connection manager editor Advanced

  • Đổi tên các tên cột như FirstName, LastName, Id, DateRowDelimiter

Flat file connection manager editor Advanced Renamed

  • Theo mặc định, các cột sẽ được s và với chuỗi DataType [DT_STR]. Nếu chúng ta khá chắc chắn, rằng một cột nhất định sẽ thuộc loại dữ liệu khác nhau, chúng ta có thể cấu hình nó trong phần Nâng cao. Chúng tôi sẽ thay đổi Id cột là các kiểu dữ liệu four-byte signed integer [DT_I4] và cột ngày là có kiểu dữ liệu date [DT_DATE]

Flat file connection manager editor Advanced Id column

Flat file connection manager editor Advanced Date column

  • Bấm vào Preview phần. Dữ liệu sẽ được hiển thị theo cấu hình cột.

Flat file connection manager editor Preview

  • Bấm OK vào trình soạn thảo quản lý kết nối tập tin phẳng và kết nối tập tin phẳng sẽ được gán cho File Source Flat trong nhiệm vụ luồng dữ liệu.

Flat file editor connection

  • Trên các Tệp Flat Nguồn Editor, bấm vào phần Cột. Bạn sẽ thấy các cột được cấu hình trong trình quản lý kết nối tệp phẳng. Bỏ chọn RowDelimiter vì chúng tôi không cần điều đó.

Flat file editor columns

  • Trên nhiệm vụ luồng dữ liệu, đặt một OLE DB Destination. Kết nối đầu ra từ nguồn tệp phẳng tới đích đích OLE DB.

Data flow task

  • Trên Destination biên tập OLE DB, chọn Quản lý kết nối OLE DB tên SQLServer và thiết lập Tên của bảng hoặc xem thả xuống [dbo].[FlatFile]

OLE DB Destination connection

  • Trên Trình chỉnh sửa đích OLE DB, hãy nhấp vào phần Ánh xạ. Vì tên cột trong trình quản lý kết nối tệp phẳng giống như các cột trong cơ sở dữ liệu, việc ánh xạ sẽ diễn ra tự động. Nếu các tên khác nhau, bạn phải ánh xạ các cột theo cách thủ công. Nhấp vào OK.

OLE DB Destination columns

  • Bây giờ gói sẵn sàng. Thực thi gói để tải dữ liệu tệp phẳng có chiều rộng cố định vào cơ sở dữ liệu.

Package execution

  • Nếu bạn truy vấn bảng dbo.FlatFile trong cơ sở dữ liệu, bạn sẽ thấy các dữ liệu tập tin phẳng nhập khẩu vào cơ sở dữ liệu.

Data imported into table

Mẫu này sẽ cung cấp cho bạn một ý tưởng về làm thế nào để nhập tập tin cố định chiều rộng bằng phẳng vào cơ sở dữ liệu. Nó không giải thích làm thế nào để xử lý lỗi đăng nhập nhưng điều này sẽ giúp bạn bắt đầu và giúp bạn khám phá các tính năng khác liên quan đến SSIS khi bạn chơi với các gói.

Hy vọng điều đó sẽ hữu ích.

SQL Scripts:

CREATE TABLE [dbo].[FlatFile](
    [Id] [int] NOT NULL, 
    [FirstName] [varchar](25) NOT NULL, 
    [LastName] [varchar](25) NOT NULL, 
    [Date] [datetime] NOT NULL 
) 
+1

Điều này không liên quan đến vấn đề hiện tại của tôi nhưng tôi vẫn được thăng hạng chỉ vì bạn đã làm một công việc tuyệt vời như vậy. – SteveCav

1

Trong việc chuyển đổi cột xuất phát, bạn có thể sử dụng SUBSTRING() chức năng cho mỗi cột. Ví dụ:

Cột DerivedColumn

FirstName SUBSTRING (dữ liệu, startFrom, Chiều dài);

Ở đây FirstName có chiều rộng 25 vì vậy nếu chúng ta xem xét từ vị trí thứ 0 thì trong cột có nguồn gốc, bạn nên chỉ định nó bằng cách cho SUBSTRING (Dữ liệu, 0, 25);

Tương tự đối với các cột khác.

1

Rất được giải thích, Siva! hướng dẫn của bạn và hình ảnh minh họa tuyệt vời chỉ ra những gì mà Microsoft đã làm nên rõ ràng

  1. rằng chiều rộng cho một hàng dài cố định phải bao gồm các nhân vật vận chuyển trở lại và Line Feed (CR & LF) (mà tôi đã tìm ra vì preview cho thấy các hàng không được xếp chính xác)
  2. rằng tất cả các bước quan trọng để xác định cột phụ để chứa các ký tự L & LF đó, mặc dù chúng sẽ không được nhập. Tôi cũng đã tìm ra điều này. Tôi sẽ được hưởng lợi bằng cách tìm câu trả lời của bạn trước khi tôi bắt đầu.

Nếu không có những hai điều, một nỗ lực để chạy việc nhập khẩu sẽ cung cấp thông báo lỗi này: Việc chuyển đổi dữ liệu cho cột "Cột x" trở lại giá trị tình trạng 4 và văn bản tình trạng "Văn bản đã được cắt bớt hoặc một hoặc nhiều ký tự không phù hợp trong trang mã đích. "

Tôi đã thêm vào văn bản lỗi này với hy vọng ai đó sẽ tìm thấy trang này trong khi tìm kiếm nguyên nhân gây ra lỗi của họ. Của bạn turorial là giá trị tìm kiếm, ngay cả khi sau khi thực tế!

Các vấn đề liên quan