L'itinéraire typique que nos clients empruntent lors de l'intégration de leurs données Oracle® et SQL Server consiste à utiliser Oracle® Heterogeneous Services avec notre pilote ODBC SQL Server. Cette approche est décrite dans notre tutoriel DG4ODBC.
Une autre méthode consiste à utiliser le bcp
outil inclus dans la distribution du pilote ODBC SQL Server en conjonction avec Oracle® SQL*Loader
. Vous pouvez utiliser un canal nommé comme conduit de données entre bcp
et SQL*Loader
c'est-à-dire que vous n'avez pas besoin d'utiliser bcp
pour écrire les données SQL Server dans un fichier physique, puis utiliser ce fichier comme source de données pour SQL*Loader
(bien que vous puissiez si vous préférez).
- Créez des exemples de données dans 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>
- Créez une table dans Oracle® pour contenir les données SQL Server :
SQL> create table bcptest (c1 int, c2 varchar(20))
- Créez un canal nommé :
$ mknod /tmp/bcp-pipe p
- Créer et remplir un
SQL*Loader
fichier de contrôle :$ cat /tmp/bcp.ctl load data append into table bcptest fields terminated by "\t" ( c1, c2 )
- Exécuter
SQL*Loader
en arrière-plan, où il restera en attente de l'arrivée des données :$ cd /u01/app/oracle/product/11.2.0/xe/bin $ ./sqlldr myuser/password data=/tmp/bcp-pipe control=/tmp/bcp.ctl &
- Utilisez
bcp
pour écrire dans le tube :$ cd /usr/local/easysoft/sqlserver/bcp/ $ ./bcp test.dbo.bcptest out /tmp/bcp-pipe -c -S myserver:1433 -U sa -P password
Le SQL*Loader
le processus lit les données du tube, insère les enregistrements dans Oracle® et se termine :
$ 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 &
Les enregistrements sont maintenant dans Oracle®, comme le montre la requête suivante dans SQL*Plus
:
$ ./sqlplus SQL> select * from bcptest; C1 C2 ---------- -------------------- 1 Hello 2 World