Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ऑरैकल डेटाबेस में विभिन्न डेटाटाइप के साथ गतिशील कॉलम के साथ फ्लैट फ़ाइल कैसे लोड करें?

तालिकाओं में फ़ाइलें लोड करने के लिए SQLLoader का उपयोग करने का एक विकल्प है।

मान लें कि हमने तीन तालिकाएँ बनाई हैं:

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

मुझे लगता है कि फ़ाइल हमेशा एक प्रारूप में रिकॉर्ड होती है (3 संभावित प्रारूपों में से एक)।
ऐसी स्थिति में, आप प्रत्येक प्रारूप के लिए 3 अलग-अलग नियंत्रण फ़ाइलें बना सकते हैं:

<मजबूत>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 )

फिर एक साधारण स्क्रिप्ट बनाएं जो फ़ाइल के प्रारूप का पता लगाती है और उपयुक्त नियंत्रण फ़ाइल का उपयोग करके डेटा अपलोड करती है - यह विंडोज़ वातावरण के लिए एक उदाहरण है:

@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

इस पंक्ति में:

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

टेस्ट/[email protected] एक डेटाबेस उपयोगकर्ता है test पासवर्ड होना 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. SQLcl (Oracle) में अपने क्वेरी परिणामों को प्रारूपित करने के 2 तरीके

  2. ऑन क्लॉज और एसक्यूएल में क्लॉज का उपयोग करने के बीच अंतर

  3. Ubuntu Oracle Java 8 के साथ IntelliJ IDEA CE 12 चलाने में असमर्थ

  4. मैं Oracle SQL डेवलपर में एक कस्टम दिनांक समय प्रारूप कैसे सेट कर सकता हूं?

  5. एक सेलेक्ट स्टेटमेंट के परिणाम अपडेट करें