2010-12-21 18 views
5

Ich muss eine Tabelle in Oracle erstellen, die eine Reihe von großen Textdateien speichern wird. Nach dem Betrachten des Oracle-Datentyps ist unklar, welchen Typ ich verwenden sollte, um die Dateien zu speichern.Oracle-Datentyp für Textdatei?

Die Grenzen für die textspezifischen Typen wie VARCHAR2 scheinen sehr klein zu sein (32K). Die anderen Typen scheinen nicht die richtige Übereinstimmung für eine Textdatei zu sein (z. B. BFILE).

Hat jemand eine Meinung über den richtigen Typ zu verwenden?

+2

32K gilt nur für PL/SQL. In einer Tabelle oder regulärem SQL kann ein VARCHAR2 nur bis zu 4000 Bytes speichern. –

Antwort

9

Der Unterschied zwischen CLOB und BLOB/BFILE besteht darin, dass CLOBs als Text behandelt werden. Das heißt, wenn Sie einen CLOB aus der Datenbank ziehen, werden alle vom Datenbankzeichensatz zum Clientzeichensatz erforderlichen Konvertierungen durchgeführt (z. B. Entfernen eines Akzents von einem ê). Wenn ein CLOB von einem Client erstellt wird, kann eine Konvertierung vom Client-Zeichensatz in den Datenbankzeichensatz erfolgen. Wenn sowohl der Client- als auch der Datenbank-Zeichensatz identisch sind, wird keine Konvertierung benötigt oder ausgeführt.

NCLOB ist wie CLOB, außer dass anstelle des Datenbankzeichensatzes die Konvertierung den NLS NCHAR-Zeichensatz verwendet.

Ein BLOB/BFILE unterliegt nicht den Konvertierungsregeln.

Also GENERAL würde ich einen CLOB für Text verwenden, aber wenn es einige Prüfsummen/Audit-Trail-Logik gibt, wo ich nicht die geringste Möglichkeit einer Zeichensatzkonvertierung haben möchte, könnte ich mich für ein BLOB/BFILE entscheiden. Ich würde nicht ein langes oder langes RAW betrachten.

1

Hängt davon ab, welche Version von Oracle Sie verwenden entweder CLOB oder Lang

+2

Wo Long veraltet ist, sollten Sie CLOB verwenden, wenn Sie können (dies ist möglich, wenn Ihre Oracle-Version nicht sehr alt ist). – Thilo

1

Die LOB-Datentypen für Zeichendaten sind CLOB und NCLOB. Sie können bis zu 8 Terabyte Zeichendaten (CLOB) oder nationale Zeichensatzdaten (NCLOB) speichern.

Später empfiehlt Oracle, vorhandene LONG RAW-Spalten in LOB-Spalten zu konvertieren. LOB-Spalten unterliegen wesentlich weniger Einschränkungen als LONG-Spalten. Außerdem wurde die LOB-Funktionalität in jeder Version verbessert, während die LONG RAW-Funktionalität für mehrere Versionen statisch war.