Con đường điển hình mà khách hàng của chúng tôi thực hiện khi tích hợp dữ liệu Oracle® và SQL Server của họ là sử dụng Dịch vụ Không đồng nhất của Oracle® với trình điều khiển SQL Server ODBC của chúng tôi. Cách tiếp cận này được mô tả trong hướng dẫn DG4ODBC của chúng tôi.
Một phương pháp thay thế là sử dụng bcp
công cụ có trong bản phân phối trình điều khiển ODBC SQL Server kết hợp với Oracle® SQL * Loader
. Bạn có thể sử dụng một đường ống được đặt tên làm đường dẫn dữ liệu giữa bcp
và SQL * Loader
tức là bạn không cần sử dụng bcp
để ghi dữ liệu SQL Server vào một tệp vật lý và sau đó sử dụng tệp này làm nguồn dữ liệu cho SQL * Loader
(mặc dù bạn có thể nếu bạn thích).
- Tạo một số dữ liệu mẫu trong SQL Server:
$ cd /usr/local/easysoft/unixodbc/bin $ ./isql.sh -v SQLSERVER_SAMPLE +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> create table bcptest (c1 int, c2 varchar(20)) SQLRowCount returns -1 SQL> insert into bcptest values (1, 'Hello'),(2,'World') SQLRowCount returns 2 SQL> select * from bcptest +------------+---------------------+ | c1 | c2 | +------------+---------------------+ | 1 | Hello | | 2 | World | +------------+---------------------+ SQLRowCount returns -1 2 rows fetched SQL>
- Tạo một bảng trong Oracle® để chứa dữ liệu SQL Server:
SQL> create table bcptest (c1 int, c2 varchar(20))
- Tạo một đường ống có tên:
$ mknod /tmp/bcp-pipe p
- Tạo và điền
SQL * Loader
tệp điều khiển:$ cat /tmp/bcp.ctl load data append into table bcptest fields terminated by "\t" ( c1, c2 )
- Chạy
SQL * Loader
trong nền, nơi nó sẽ vẫn chờ dữ liệu đến:$ cd /u01/app/oracle/product/11.2.0/xe/bin $ ./sqlldr myuser/password data=/tmp/bcp-pipe control=/tmp/bcp.ctl &
- Sử dụng
bcp
để ghi vào đường dẫn:$ cd /usr/local/easysoft/sqlserver/bcp/ $ ./bcp test.dbo.bcptest out /tmp/bcp-pipe -c -S myserver:1433 -U sa -P password
Trình tải SQL *
quy trình đọc dữ liệu từ đường ống, chèn các bản ghi vào Oracle® và kết thúc:
$ SQL*Loader: Release 11.2.0.2.0 - Production on Fri Nov 4 07:18:53 2016 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. -bash-4.1$ Commit point reached - logical record count 2 [1]+ Done ./sqlldr myuser/mypassword data=/tmp/bcp-pipe control=/tmp/bcp.ctl &
Các bản ghi hiện có trong Oracle®, như được hiển thị bằng truy vấn sau trong SQL * Plus
:
$ ./sqlplus SQL> select * from bcptest; C1 C2 ---------- -------------------- 1 Hello 2 World