Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chèn dữ liệu máy chủ SQL với Oracle® SQL * Loader

Con đường điển hình mà khách hàng của chúng tôi thực hiện khi tích hợp dữ liệu Oracle® và SQL Server của họ là sử dụng Dịch vụ Không đồng nhất của Oracle® với trình điều khiển SQL Server ODBC của chúng tôi. Cách tiếp cận này được mô tả trong hướng dẫn DG4ODBC của chúng tôi.

Một phương pháp thay thế là sử dụng bcp công cụ có trong bản phân phối trình điều khiển ODBC SQL Server kết hợp với Oracle® SQL * Loader . Bạn có thể sử dụng một đường ống được đặt tên làm đường dẫn dữ liệu giữa bcp SQL * Loader tức là bạn không cần sử dụng bcp để ghi dữ liệu SQL Server vào một tệp vật lý và sau đó sử dụng tệp này làm nguồn dữ liệu cho SQL * Loader (mặc dù bạn có thể nếu bạn thích).

  1. Tạo một số dữ liệu mẫu trong 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. Tạo một bảng trong Oracle® để chứa dữ liệu SQL Server:
    SQL> create table bcptest (c1 int, c2 varchar(20))
    
  3. Tạo một đường ống có tên:
    $ mknod /tmp/bcp-pipe p
    
  4. Tạo và điền SQL * Loader tệp điều khiển:
    $ cat /tmp/bcp.ctl
    
    load data
     append
     into table bcptest
     fields terminated by "\t"
     ( c1, c2 )
    
  5. Chạy SQL * Loader trong nền, nơi nó sẽ vẫn chờ dữ liệu đến:
    $ cd /u01/app/oracle/product/11.2.0/xe/bin
    $ ./sqlldr myuser/password data=/tmp/bcp-pipe control=/tmp/bcp.ctl &
    
  6. Sử dụng bcp để ghi vào đường dẫn:
    $ cd /usr/local/easysoft/sqlserver/bcp/
    $ ./bcp test.dbo.bcptest out /tmp/bcp-pipe -c -S myserver:1433 -U sa -P password
    

Trình tải SQL * quy trình đọc dữ liệu từ đường ống, chèn các bản ghi vào Oracle® và kết thúc:

$ 
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 &

Các bản ghi hiện có trong Oracle®, như được hiển thị bằng truy vấn sau trong 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. Lỗi chuỗi nhà phát triển Oracle Sql quá dài theo nghĩa đen

  2. Theo giai đoạn APPLIC_TOP trong Ứng dụng Oracle R12

  3. Điều chỉnh SQL

  4. Oracle Chèn qua Chọn từ nhiều bảng trong đó một bảng có thể không có hàng

  5. Những thay đổi chính về Công nghệ trong E-Business Suite 12.2