La ruta típica que toman nuestros clientes cuando integran sus datos de Oracle® y SQL Server es utilizar Oracle® Heterogeneous Services con nuestro controlador ODBC de SQL Server. Este enfoque se describe en nuestro tutorial DG4ODBC.
Un método alternativo es usar el bcp herramienta incluida en la distribución del controlador ODBC de SQL Server junto con Oracle® SQL*Loader . Puede usar una canalización con nombre como conducto de datos entre bcp y SQL*Loader es decir, no necesita usar bcp para escribir los datos de SQL Server en un archivo físico y luego usar este archivo como fuente de datos para SQL*Loader (aunque puedes hacerlo si lo prefieres).
- Cree algunos datos de muestra en 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>
- Cree una tabla en Oracle® para almacenar los datos de SQL Server:
SQL> create table bcptest (c1 int, c2 varchar(20))
- Cree una canalización con nombre:
$ mknod /tmp/bcp-pipe p
- Cree y complete un
SQL*Loaderarchivo de control:$ cat /tmp/bcp.ctl load data append into table bcptest fields terminated by "\t" ( c1, c2 )
- Ejecutar
SQL*Loaderen segundo plano, donde quedará esperando que lleguen los datos:$ cd /u01/app/oracle/product/11.2.0/xe/bin $ ./sqlldr myuser/password data=/tmp/bcp-pipe control=/tmp/bcp.ctl &
- Usar
bcppara escribir en la canalización:$ cd /usr/local/easysoft/sqlserver/bcp/ $ ./bcp test.dbo.bcptest out /tmp/bcp-pipe -c -S myserver:1433 -U sa -P password
El SQL*Loader proceso lee datos de la tubería, inserta los registros en Oracle® y termina:
$ 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 &
Los registros ahora están en Oracle®, como lo muestra la siguiente consulta en SQL*Plus :
$ ./sqlplus
SQL> select * from bcptest;
C1 C2
---------- --------------------
1 Hello
2 World