Rute khas yang diambil pelanggan kami saat mengintegrasikan data Oracle® dan SQL Server mereka adalah dengan menggunakan Oracle® Heterogeneous Services dengan driver SQL Server ODBC kami. Pendekatan ini dijelaskan dalam tutorial DG4ODBC kami.
Metode alternatif adalah dengan menggunakan bcp
alat yang disertakan dalam distribusi driver SQL Server ODBC bersama dengan Oracle® SQL*Loader
. Anda dapat menggunakan pipa bernama sebagai saluran data antara bcp
dan SQL*Loader
yaitu Anda tidak perlu menggunakan bcp
untuk menulis data SQL Server ke file fisik dan kemudian menggunakan file ini sebagai sumber data untuk SQL*Loader
(walaupun bisa jika Anda mau).
- Buat beberapa contoh data di 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>
- Buat tabel di Oracle® untuk menampung data SQL Server:
SQL> create table bcptest (c1 int, c2 varchar(20))
- Buat pipa bernama:
$ mknod /tmp/bcp-pipe p
- Membuat dan mengisi
SQL*Loader
file kontrol:$ cat /tmp/bcp.ctl load data append into table bcptest fields terminated by "\t" ( c1, c2 )
- Jalankan
SQL*Loader
di latar belakang, di mana ia akan tetap menunggu data tiba:$ cd /u01/app/oracle/product/11.2.0/xe/bin $ ./sqlldr myuser/password data=/tmp/bcp-pipe control=/tmp/bcp.ctl &
- Gunakan
bcp
untuk menulis ke pipa:$ cd /usr/local/easysoft/sqlserver/bcp/ $ ./bcp test.dbo.bcptest out /tmp/bcp-pipe -c -S myserver:1433 -U sa -P password
SQL*Loader
proses membaca data dari pipa, memasukkan catatan ke dalam Oracle® dan mengakhiri:
$ 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 &
Catatan sekarang ada di Oracle®, seperti yang ditunjukkan oleh kueri berikut di SQL*Plus
:
$ ./sqlplus SQL> select * from bcptest; C1 C2 ---------- -------------------- 1 Hello 2 World