Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Memasukkan Data SQL Server dengan Oracle® SQL*Loader

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).

  1. 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>
    
  2. Buat tabel di Oracle® untuk menampung data SQL Server:
    SQL> create table bcptest (c1 int, c2 varchar(20))
    
  3. Buat pipa bernama:
    $ mknod /tmp/bcp-pipe p
    
  4. Membuat dan mengisi SQL*Loader file kontrol:
    $ cat /tmp/bcp.ctl
    
    load data
     append
     into table bcptest
     fields terminated by "\t"
     ( c1, c2 )
    
  5. 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 &
    
  6. 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Set Operator

  2. PLSQL Masukkan ke dengan subquery dan klausa kembali

  3. ORA-30926:tidak bisa mendapatkan set baris yang stabil di tabel sumber saat Menggabungkan tabel

  4. Ubah tipe data stempel waktu menjadi stempel waktu unix Oracle

  5. KUNCI ASING PADA HAPUS BATASAN Kesalahan - Oracle