SSIS giữ cho lực lượng thay đổi chuỗi nguồn excel nổi


9

Có một cột trong Excel được coi là văn bản, nhưng SSIS nhìn thấy văn bản số ở đó và tự động làm cho nó nổi chính xác kép [DT_R8].

Tôi có thể thay đổi thủ công trong các cột Bên ngoài và Đầu ra của nhánh Đầu ra, nhưng Đầu ra Lỗi chỉ từ chối để tôi thay đổi cột tương ứng.

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".

Tôi đã thử sửa đổi gói xml. Tôi đã thử IMEX=1typeguessrow=0không ai trong số đó đã khắc phục vấn đề của tôi. Điều này có bất kỳ sửa chữa nào không? Ngoài ra còn có các bài viết đề nghị bạn sửa đổi sổ đăng ký của mình để excel đọc nhiều hơn 8 hàng mặc định trước khi đoán kiểu dữ liệu. Tôi không muốn đi theo con đường này bởi vì ngay cả khi nó hoạt động, thì tôi sẽ phải sửa đổi sổ đăng ký trên máy mà tôi dự định chạy gói trên.

Ví dụ, trường excel được nhập vào trường nvarchar SQL đọc

295.3
296.33

nhưng chúng đang được ghi vào bảng SQL như

295.30000000000001
296.32999999999998

Tôi đưa vào kho dữ liệu và các trường hiển thị

295.3
296.33

tất cả các cách thực hiện thông qua đó là chính xác nhưng tôi đoán khi nó chạm vào nguồn đích OLE DB thì bằng cách nào đó nó chuyển đổi nó thành

295.30000000000001
296.32999999999998

sai chỗ nào.

Tôi cũng có các giá trị như V321.1 và V213.34, ví dụ, chắc chắn không phải là số nguyên và cần được lưu trữ dưới dạng varchar.


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Paul White 9

Câu trả lời:


2

Có thể lấy tệp dưới dạng tệp .csv có thể được nhập như tệp văn bản và sẽ không gặp sự cố này? Tôi thường khởi động lại tất cả các tệp Excel và yêu cầu định dạng khác vì SSIS và Excel không chơi tốt với nhau ở nhiều cấp độ.


1
Tôi hy vọng việc thay đổi tệp .csv hoặc txt sẽ có trong tương lai gần. sẽ làm cho mọi thứ dễ dàng hơn nhiều.
Juan Velez

2

Có vẻ như không có cách nào để khắc phục vấn đề này. Excel nhìn vào một vài hàng dữ liệu đầu tiên trong cột và sẽ luôn FORCE kiểu dữ liệu thành FLOAT bất kể điều gì. Tôi đã được cung cấp một giải pháp tạo một mẫu với một vài ký tự varchar trong một vài hàng đầu tiên (8+) để EXCEL sẽ chọn mẫu đó làm kiểu dữ liệu và sau đó nhập dữ liệu của tôi. Điều hữu ích là vì tôi đang sử dụng Source Safe, tôi có thể "Đăng nhập" một tệp để nó làm cho tệp gói của tôi "Chỉ đọc" để Visual Studio không thể thay đổi các loại dữ liệu được xác định trước.


1

Bước 1: Thêm IMEX=1; MAXROWSTOSCAN=0vào chuỗi kết nối (ví dụ Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0").

Bước 2: Đóng giải pháp. Mở gói SSIS trong trình soạn thảo văn bản, tìm các cột tiếp tục đảo ngược về kiểu dữ liệu được xác định trước. Cập nhật thủ công trong tệp XML thành định dạng mong muốn.

Bước 3: Mở gói trong Công cụ dữ liệu SQL Server và thực thi, bây giờ bạn sẽ có thể tải dữ liệu như từ tệp.


Xin lỗi, nhưng kiểu dữ liệu nguồn không có trong gói. Chỉ các loại cột đích. Điều này đánh bại mục đích một lần nữa, vì chuyển đổi vẫn xảy ra bên cạnh trình điều khiển Microsoft.Ace (hoặc bất kỳ trình điều khiển nào được chọn) và mất dữ liệu đã xảy ra vào thời điểm nó vào SSIS và bảng đích.
Kỹ sư đảo ngược
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.