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

Làm thế nào để tải tệp phẳng với các cột động có kiểu dữ liệu khác nhau vào cơ sở dữ liệu oracle?

Một tùy chọn là sử dụng SQLLoader để tải tệp vào bảng.

Giả sử chúng ta đã tạo ba bảng:

CREATE TABLE tableA(
  col1 int, col2 int, col3 int, col4 int 
);

CREATE TABLE tableB(
  col1 int, col2 varchar2(100), col3 int, col4 int, col5 int, col6 varchar2(100)
);

CREATE TABLE tableC(
  col1 varchar2(100), col2 date, col3 number(10,2)
);

Tôi giả định rằng tệp luôn chỉ ghi ở một định dạng (một trong 3 định dạng có thể có).
Trong trường hợp này, bạn có thể tạo 3 tệp điều khiển khác nhau cho mỗi định dạng:

format_a.ctl

load data
 infile 'c:\tmp\test\file.txt'
 into table tableA
 fields terminated by "|"         
 ( col1, col2, col3, col4 )

format_b.ctl

load data
 infile 'c:\tmp\test\file.txt'
 into table tableB
 fields terminated by "|"         
 ( col1, col2, col3, col4, col5, col6 )

format_c.ctl

infile 'c:\tmp\test\file.txt'
 into table tableC
 fields terminated by "|"         
 ( col1 , 
   col2 date 'yyyy-mm-dd',
   col3 )

Sau đó, tạo một tập lệnh đơn giản để phát hiện định dạng của tệp và tải dữ liệu lên bằng cách sử dụng tệp điều khiển thích hợp - đây là ví dụ cho môi trường Windows:

@echo off
set filename=file.txt
IF NOT EXIST   %filename%  GOTO error

findstr /M "\|.*\|.*\|.*\|.*\|" file.txt
IF NOT ERRORLEVEL 1 GOTO formatB

findstr /M "\|.*\|.*\|" file.txt
IF NOT ERRORLEVEL 1 GOTO formatA

findstr /M "\|.*\|" file.txt
IF NOT ERRORLEVEL 1 GOTO formatC

:error
Echo Error: file %filename% doesn't exist or doesn't match any proper format
goto end

:formatA
set ctl_file=format_a
goto import

:formatB
set ctl_file=format_b
goto import

:formatc
set ctl_file=format_c
goto import

:import
echo Import using: %ctl_file%
sqlldr test/[email protected]//192.168.2.51:1521/orcl control=%ctl_file%.ctl log=%ctl_file%.log
:end

Trong dòng này:

sqlldr test/[email protected]//192.168.2.51:1521/orcl control=%ctl_file%.ctl log=%ctl_file%.log

test / [email protected] là người dùng cơ sở dữ liệu test có mật khẩu test




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng google dịch URL trong Oracle plsql

  2. Ví dụ về bảng bên ngoài Oracle

  3. Sách trắng về thống kê CBO

  4. Oracle MERGE nâng lỗi ORA-00904

  5. Xử lý Null trong hàm Greatest trong Oracle