2013-06-18 34 views
7

Tôi thiết lập một ODBC kết nối với một cơ sở dữ liệu SQL (Netezza). Kết nối là tốt. Tuy nhiên, R chỉ kéo ra 256 hàng theo mặc định và hạn chế số hàng mà nó có thể kéo ra.Kết nối RODBC- các hàng bị giới hạn

Nếu tôi chạy truy vấn trong Netezza, nó sẽ trả về tổng số hàng (300k). Tôi hy vọng cùng một số hàng trong R. Tuy nhiên, nó chỉ trả lại 256 hàng khá ngắn từ 300k.

Người tài xế Tôi đang sử dụng phiên bản NetezzaSQL 7.00.02 NSQLODBC.DLL

tôi đã cố gắng để thay đổi tìm nạp trước đếm đến số không trong "Trình điều khiển Tùy chọn' từ Control Panel> Administrative Tools> Data Sources (OBBC)> Hệ thống DNS

Nó đã không làm việc. Bất cứ ý tưởng?

+0

Bạn mong đợi bao nhiêu hàng? Và bạn đang sử dụng thư viện kết nối ODBC nào? –

+0

kích thước đầy đủ (300k). Tôi cho rằng bạn có nghĩa là ODBC Data Source Administrator> Hệ thống DSN –

+0

Và loại trình điều khiển nào? –

Trả lời

7

tôi nghĩ RODBC hoạt động kém với Netezza. Một giải pháp http://datamining.togaware.com/survivor/Database_Connection.html

chỉ cần thêm believeNRows=FALSE e ither của bạn sqlQuery hoặc odbcConnect cuộc gọi (sử dụng sau này nếu bạn cũng sử dụng sqlFetch.

+0

Chính xác, chỉ cần thêm đối số vào truy vấn của bạn, ví dụ 'results = sqlQuery (dbhandle," SELECT * FROM TABLE ", tinNRows = FALSE)' – DavidJ

+0

Đã một năm rồi, nhưng nó hoạt động cho tôi: D – gtnbz2nite

2

Bạn cũng có thể thử sử dụng JDBC tài xế:

library(RJDBC) 
drv <- JDBC("org.netezza.Driver", "nzjdbc.jar", "'") 

conn <- dbConnect(drv, "jdbc:netezza://host:5480/database", "user", "password") 

res <- dbSendQuery(conn, "select * from mytable") 

Bằng cách đó bạn không cần phải đối phó với DSN vv

+1

Alex, I đã thử phương pháp này bằng cách sử dụng nzjdbc.jar trên máy Mac và vẫn nhận được 256 hàng trở lại. Bất kỳ ý tưởng? –

+0

@FrankP., 256 là độ dài mặc định của bộ đệm tìm nạp trước cho trình điều khiển. Bạn đã tải xuống dữ liệu bằng cách sử dụng 'fetch (res, n = -1)'? -1 sẽ buộc tất cả các bản ghi phải được truy lục. –

0

Tôi biết đây là loại out-ngày nhưng vấn đề là không phải với gói RODBC. Vấn đề nằm ở cách bạn thiết lập kết nối ODBC nếu bạn cấu hình kết nối trong các cửa sổ bạn sẽ thấy một tab cuối cùng trong các thiết lập nơi bạn có thể xác định số lượng hàng mà nó sẽ tìm nạp. Và giá trị mặc định là 256.