2017-04-20 2 views
0

Exemple:Quel est le moyen de supprimer des données d'une colonne particulière d'une table dans Oracle 10g en utilisant SQL * Plus?

TABLE_A

id | not null | number(10) 
name | not null | varchar(50) 
photo | not null | blob 

Si je veux supprimer des données blob de la colonne photo du tableau A

Ma table se compose autour de 2.000.000 lignes, il devient donc de temps pour exécuter l'instruction UPDATE.

Mon approche:

CREATE DIRECTORY EXT_DIR as '/tmp/TEST/'; 

CREATE TABLE TABLE_TEMP 
( 
    ID varchar2(10), 
    NAME varchar2(50) 
) 
ORGANIZATION EXTERNAL 
(
    TYPE ORACLE_LOADER 
    DEFAULT DIRECTORY EXT_DIR 
    ACCESS PARAMETERS 
    (
     RECORDS DELIMITED BY NEWLINE 
     FIELDS TERMINATED BY ',' 
     MISSING FIELD VALUES ARE NULL 
     (
      ID char(10), 
      NAME char(50) 
     ) 
    ) 
    LOCATION ('TABLE_A.csv') ---dump taken from TABLE_A 
) 
REJECT LIMIT UNLIMITED; 
/

INSERT INTO TABLE_A(ID,NAME) SELECT ID,NAME FROM TABLE_TEMP; 

Mon approche prenait des données de table en CSV et en utilisant le tableau EXTERNE pour insérer des données CSV dans ma table mais comme CSV peut stocker jusqu'à 1048576 lignes, Admirer donc des façons différentes.

+1

Qu'avez-vous essayé? SO n'est pas pour les questions pratiques, donc vous devriez faire une recherche, essayer quelque chose et ensuite, si vous avez encore besoin d'aide, postez une question – Aleksej

+0

Ok noté! Tout d'abord, ma table se compose d'environ 20 lignes lac, ce qui prend beaucoup de temps pour exécuter une instruction UPDATE. Mon approche consistait à prendre des données de table dans CSV et à utiliser EXTERNAL TABLE pour insérer des données CSV dans ma table mais comme CSV peut stocker jusqu'à 1048576 lignes. –

+0

Si vous pouvez faire des instructions DDL, déposez la colonne, puis ajoutez-la à nouveau. Mais qu'en est-il de la contrainte NOT NULL sur la colonne? – Aleksej

Répondre

-1
DELETE photo FROM [Table A] 

Essayez ceci

+0

Avez-vous essayé cette phrase? – Seyran

+0

désolé..il fonctionne pour sql server dbms. Si les colonnes sont nullables, vous pouvez simplement lancer une requête pour les annuler: 'UPDATE [Table A] set photo = NULL' –

+0

si vous voulez toujours le supprimer, d'abord changer la colonne à nullable ie' ALTER TABLE [TABLE A] modifier (photo NULL); 'alors exécuter' UPDATE [Table A] définir photo = NULL' puis le redéfinir à nullable 'ALTER TABLE [TABLE A] modifier (photo NOT NULL);' –

2

Tout d'abord tous les peuples qui ont répondu comme delete col from table, il n'y a aucune déclaration dans l'oracle supprimer des colonnes, la déclaration delete supprime les lignes. S'il vous plaît, avant de répondre, assurez-vous que cela correspond à la question.

Vous devez mettre à jour la table update table_a set photo = null, Mais en regardant à votre description de la table vous ne pouvez pas le faire en raison de la colonne définie not null.

+0

c'est correct .. Merci pour le rappel –

1

Si vous souhaitez supprimer certaines lignes de la colonne de photo, vous devez modifier préalablement cette table

ALTER TABLE TableA modify (photo NULL); 

Ensuite, vous pouvez « effacer » des données de réglage à null:

UPDATE TableA SET photo = null 

Si vous voulez supprimer la colonne puis

ALTER TABLE TableA DROP photo;