2012-08-27 40 views
16

Tôi cố tải cơ sở dữ liệu của mình bằng tấn dữ liệu từ tệp .csv có kích thước 1,4 GB. Nhưng khi tôi cố gắng chạy mã của tôi, tôi nhận được lỗi.Không thể tìm nạp hàng từ nhà cung cấp OLE DB "BULK" cho máy chủ được liên kết "(null)"

Dưới đây là mã của tôi:

USE [Intradata NYSE] 
GO 
CREATE TABLE CSVTest1 
(Ticker varchar(10) NULL, 
dateval date NULL, 
timevale time(0) NULL, 
Openval varchar(10) NULL, 
Highval varchar(10) NULL, 
Lowval varchar(10) NULL, 
Closeval varchar(10) NULL, 
Volume varchar(10) NULL 
) 
GO 

BULK 
INSERT CSVTest1 
FROM 'c:\intramerge.csv' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 
--Check the content of the table. 
SELECT * 
FROM CSVTest1 
GO 
--Drop the table to clean up database. 
DROP TABLE CSVTest1 
GO 

tôi cố gắng xây dựng một cơ sở dữ liệu với nhiều stockquotes. Nhưng tôi nhận được thông báo lỗi này:

Msg 4832, Cấp 16, Tiểu bang 1, Dòng 2 Tải hàng loạt: Đã xảy ra kết thúc bất ngờ của tệp trong tệp dữ liệu. Msg 7399, Cấp 16, Tiểu bang 1, Dòng 2 Nhà cung cấp OLE DB "SỐ LƯỢNG LỚN" cho máy chủ được liên kết "(null)" được báo cáo một lỗi. Nhà cung cấp không cung cấp bất kỳ thông tin nào về lỗi . Msg 7330, Level 16, State 2, Dòng 2 có thể không lấy một hàng từ nhà cung cấp OLE DB "RỜI" cho máy chủ liên kết "(null)"

Tôi không hiểu nhiều về SQL, nhưng tôi hy vọng để bắt một hoặc hai điều. Hy vọng ai đó nhìn thấy những gì có thể rất rõ ràng.

Trả lời

4

Tôi gặp lỗi tương tự khi tôi có một số trường phân cách khác nhau trong CSV của tôi so với các cột tôi có trong bảng của mình. Kiểm tra xem bạn có đúng số trường trong intramerge.csv hay không.

1

Đó là một câu hỏi cũ nhưng có vẻ như phát hiện của tôi sẽ làm sáng tỏ một số người khác có vấn đề tương tự.

Giá trị thời gian chờ SSIS mặc định có vẻ là 30 giây. Điều này làm cho bất kỳ dịch vụ bị ràng buộc hoặc IO ràng buộc hoạt động trong gói của bạn đi vượt quá giá trị thời gian chờ đó và gây ra một thời gian chờ. Tăng giá trị thời gian chờ đó (thay đổi thành "0" không có thời gian chờ) sẽ giải quyết vấn đề.

11

Tôi gặp vấn đề tương tự.

Giải pháp:

Xác minh CSV hoặc textfile trong trình chỉnh sửa văn bản như notepad +. Dòng cuối cùng có thể chưa hoàn thành. Gỡ bỏ nó.

9

Đang phục hồi một câu hỏi cũ, nhưng trong trường hợp này sẽ giúp người khác: (! Cuối cùng) sau nhiều thử nghiệm và lỗi cuối cùng tôi đã có thể để thoát khỏi lỗi này bằng cách thay đổi này:

ROWTERMINATOR = '\n' 

Để này:

ROWTERMINATOR = '0x0A' 
+1

Điều này phù hợp với tôi. Ngoài ra, tôi khuyên bạn nên chạy lệnh 'more' trong CMD để kiểm tra phần cuối của tệp lớn hơn cho chân trang hoặc các vấn đề. Nếu bạn làm 'more + n [filename]' thì CMD sẽ hiển thị tất cả các dòng sau 'n', sử dụng nó để kiểm tra gần cuối tập tin. – rjmd

2

tôi đã nhận lỗi này khi tập tin định dạng của tôi (tức là xác định bằng cách sử dụng FORMATFILE param) đã có một chiều rộng cột đó là nhỏ hơn so với kích thước cột thực tế (ví dụ như varchar(50) thay vì varchar(100)).

+0

Trường hợp tương tự đối với tôi, việc thay đổi kiểu dữ liệu 'int' của cột thành' bigint' giải quyết được vấn đề. Tuy nhiên tôi nghĩ rằng điều này sẽ gây ra một lỗi 'overflow'. – Athafoud

+0

Tương tự cho tôi. Không có gì để làm với kích thước cột, nhưng một tập tin định dạng không chính xác tất cả như nhau. –

1

Tôi nhận ngoại lệ này khi trường char trong bảng SQL của tôi quá nhỏ đối với văn bản sắp tới. Hãy thử làm cho cột lớn hơn.

0

Đây có thể là một ý tưởng tồi với một 1.5GB đầy đủ, nhưng bạn có thể thử nó trên một tập hợp con (bắt đầu với một vài dòng):

CREATE TABLE CSVTest1 
(Ticker varchar(MAX) NULL, 
    dateval varchar(MAX) NULL, 
    timevale varchar(MAX) NULL, 
    Openval varchar(MAX) NULL, 
    Highval varchar(MAX) NULL, 
    Lowval varchar(MAX) NULL, 
    Closeval varchar(MAX) NULL, 
    Volume varchar(MAX) NULL 
) 

...làm BULK INSERT của bạn, sau đó

SELECT MAX(LEN(Ticker)), 
    MAX(LEN(dateval)), 
    MAX(LEN(timevale)), 
    MAX(LEN(Openval)), 
    MAX(LEN(Highval)), 
    MAX(LEN(Lowval)), 
    MAX(LEN(Closeval)), 
    MAX(LEN(Volume)) 

Điều này sẽ giúp cho bạn biết ước tính của bạn về cột có bị tắt hay không. Bạn cũng có thể thấy các cột của bạn không đúng thứ tự hoặc BULK INSERT có thể vẫn không thành công vì một số lý do khác.

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