Typową drogą, którą wybierają nasi klienci podczas integracji danych Oracle® i SQL Server, jest korzystanie z usług Oracle® Heterogenous Services z naszym sterownikiem ODBC SQL Server. To podejście jest opisane w naszym samouczku DG4ODBC.
Alternatywną metodą jest użycie bcp narzędzie zawarte w dystrybucji sterowników ODBC SQL Server w połączeniu z Oracle® SQL*Loader . Możesz użyć nazwanego potoku jako kanału danych między bcp i SQL*Loader tzn. nie musisz używać bcp aby zapisać dane SQL Server w fizycznym pliku, a następnie użyć tego pliku jako źródła danych dla SQL*Loader (chociaż możesz, jeśli wolisz).
- Utwórz przykładowe dane w 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>
- Utwórz tabelę w Oracle® do przechowywania danych SQL Server:
SQL> create table bcptest (c1 int, c2 varchar(20))
- Utwórz nazwany potok:
$ mknod /tmp/bcp-pipe p
- Utwórz i wypełnij
SQL*Loaderplik kontrolny:$ cat /tmp/bcp.ctl load data append into table bcptest fields terminated by "\t" ( c1, c2 )
- Uruchom
SQL*Loaderw tle, gdzie będzie czekał na przybycie danych:$ cd /u01/app/oracle/product/11.2.0/xe/bin $ ./sqlldr myuser/password data=/tmp/bcp-pipe control=/tmp/bcp.ctl &
- Użyj
bcppisać do potoku:$ cd /usr/local/easysoft/sqlserver/bcp/ $ ./bcp test.dbo.bcptest out /tmp/bcp-pipe -c -S myserver:1433 -U sa -P password
Program ładujący SQL* proces odczytuje dane z potoku, wstawia rekordy do Oracle® i kończy:
$ 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 &
Rekordy znajdują się teraz w Oracle®, jak pokazano w następującym zapytaniu w SQL*Plus :
$ ./sqlplus
SQL> select * from bcptest;
C1 C2
---------- --------------------
1 Hello
2 World