2011-02-09 10 views
7

मेरे पास एक बाहरी तालिका है जो एक निश्चित लंबाई फ़ाइल से पढ़ती है। फ़ाइल में विशेष वर्ण होने की उम्मीद है। मेरे मामले में विशेष चरित्र वाला शब्द "गोटेबोर्ग" है। क्योंकि "ö" एक विशेष चरित्र है, ऐसा लगता है जैसे ओरेकल इसे 2 बाइट्स के रूप में मान रहा है। इससे मुसीबत आती है। फ़ाइलों में आने वाले फ़ील्ड को 1 बाइट द्वारा स्थानांतरित किया जाता है जिससे डेटा को गड़बड़ कर दिया जाता है। क्या किसी ने पहले इस मुद्दे का सामना किया है। अब तक हम की कोशिश की है निम्नलिखित समाधान:ओरेकल बाहरी सारणी में यूटीएफ -8 अक्षरों को संभालना

NLS_LANG का मूल्य बदल दिया
AMERICAN_AMERICA.WE8ISO8859P1 को डाटाबेस चरित्र की स्थापना की कोशिश की UTF-8
करने के लिए सेट की कोशिश की बदलते NLS_LENGTH_SYMMANTIC ALTER प्रणाली
का उपयोग कर बाइट की बजाय चार को बाहरी तालिका वर्णमाला को बदलने का प्रयास किया: AL32UTF8
बाहरी तालिका वर्णमाला को बदलने का प्रयास किया: यूटीएफ -8

कुछ भी काम नहीं करता है। अन्य विवरण शामिल हैं: RHEL

  • डेटाबेस:: Oracle 11g
  • कोई भी चीज बाकी है कि मैं याद आ रही हो सकता है

    • फ़ाइल UTF-8 एन्कोडेड
    • ऑपरेटिंग सिस्टम है? किसी भी तरह की सहायता को आभार समझेंगे। धन्यवाद!

    उत्तर

    8

    nls_length_semantics केवल नई तालिकाओं के निर्माण से संबंधित है।

    नीचे मैंने यह समस्या ठीक करने के लिए किया है।

    records delimited by newline 
        CHARACTERSET AL32UTF8 
        STRING SIZES ARE IN CHARACTERS 
    

    अर्थात

    ALTER SESSION SET nls_length_semantics = CHAR 
    /
    CREATE TABLE TDW_OWNER.SDP_TST_EXT 
    (
        COST_CENTER_CODE VARCHAR2(10)  NULL, 
        COST_CENTER_DESC VARCHAR2(40)  NULL, 
        SOURCE_CLIENT VARCHAR2(3)  NULL, 
        NAME1   VARCHAR2(35)  NULL 
    ) 
    ORGANIZATION EXTERNAL 
    (TYPE ORACLE_LOADER 
        DEFAULT DIRECTORY DBA_DATA_DIR 
        ACCESS PARAMETERS 
        (records delimited by newline 
         CHARACTERSET AL32UTF8 
         STRING SIZES ARE IN CHARACTERS 
         logfile DBA_DATA_DIR:'sdp_tst_ext_%p.log' 
         badfile DBA_DATA_DIR:'sdp_tst_ext_%p.bad' 
         discardfile DBA_DATA_DIR:'sdp_tst_ext_%p.dsc' 
         fields 
        notrim 
         (
          COST_CENTER_CODE CHAR(10) 
          ,COST_CENTER_DESC CHAR(40) 
          ,SOURCE_CLIENT CHAR(3) 
          ,NAME1 CHAR(35) 
          ) 
        ) 
        LOCATION (DBA_DATA_DIR:'sdp_tst.dat') 
    ) 
    REJECT LIMIT UNLIMITED 
    NOPARALLEL 
    NOROWDEPENDENCIES 
    /
    
    +0

    धन्यवाद! यहां मेरी समस्या हल हो गई। –

    संबंधित मुद्दे