[DB2] Dropowanie kolumny.
Jan Słupicki - 28-02-2006 13:11
[DB2] Dropowanie kolumny.
Czy można jakoś bezboleśnie dropować kolumnę? Czytam o ALTER TABLE dla DB2 i jakoś nie mogę się doczytać jak można zdropować albo zmienić nazwę kolumnie. Dodałem właśnie kolumnę do tabeli ale zrobiłem literówkę. Chciałbym teraz zmienić nazwę kolumny (lub zdropować i dodać od nowa). Tabela ma dużo danych i jest mocno powiązana foregin key-ami z innymi tabelami (jest jeszcze sporo triggerów) więc nie bardzo mi się uśmiecha kopiowanie danych do tymczasowej tabeli i utworzenie tabeli od nowa.
-- Jan Słupicki
mgl - 28-02-2006 13:11
Jan Słupicki wrote:
> Czy można jakoś bezboleśnie dropować kolumnę? > Czytam o ALTER TABLE dla DB2 i jakoś nie mogę > się doczytać jak można zdropować albo zmienić nazwę > kolumnie.
To zalezy, o jakie DB2 UDB chodzi - w wersji "for ISeries" v5r4 mozna zrobic po prostu:
ALTER TABLE tablex DROP COLUMN columnx
Natomiast w wersji dla Windows, Linux i Unix zdaje sie nie ma takiej mozliwosci. Rozwiazania sa wiec dwa:
1. Nowy widok z nazwami kolumn wedle uznania. 2. Stworzenie nowej tabeli z poprawna nazwa kolumny i przekopiowanymi danymi.
pozdrawiam, -- mgl
Jan Słupicki - 28-02-2006 13:11
> To zalezy, o jakie DB2 UDB chodzi - w wersji "for ISeries" v5r4 mozna > zrobic po prostu: > > ALTER TABLE tablex > DROP COLUMN columnx > > Natomiast w wersji dla Windows, Linux i Unix zdaje sie nie ma takiej > mozliwosci. Rozwiazania sa wiec dwa:
Wersja 8.0 Enterprise dla Windows. Jak rozumiem to oznacza że nie ma DROP COLUMN - szkoda :-(
> 1. Nowy widok z nazwami kolumn wedle uznania. > 2. Stworzenie nowej tabeli z poprawna nazwa kolumny i przekopiowanymi > danymi.
Chyba trzeba będzie tak zrobić. Trochę zejdzie mi na pisaniu skryptu dropującego wszelkie constrainy i triggery ale jak nie ma wyboru ... Zdaje się że w DB2 nie działa konstrukcja INSERT INTO tab1 SELECT * FROM tab2 dla więcej niż jednego wiersza. Czy jest jakaś zgrabna konstrukcja do skopiowania tabeli ?
-- Jan Słupicki
mgl - 28-02-2006 13:12
Jan Słupicki wrote: > Chyba trzeba będzie tak zrobić. Trochę zejdzie mi na pisaniu > skryptu dropującego wszelkie constrainy i triggery ale jak nie ma wyboru > ... > Zdaje się że w DB2 nie działa konstrukcja > INSERT INTO tab1 SELECT * FROM tab2 > dla więcej niż jednego wiersza. Czy jest jakaś zgrabna konstrukcja > do skopiowania tabeli ?
Nie korzystałem nigdy z DB2 UDB (tylko DB2/400), ale przejrzyj:
"Changing or Dropping a Column in DB2": http://www-1.ibm.com/support/docview...=utf-8&lang=en
"Using Export": http://publib.boulder.ibm.com/infoce...n/t0004554.htm
"Using import": http://publib.boulder.ibm.com/infoce...n/t0004575.htm
pozdrawiam, -- mgl
Jan Słupicki - 28-02-2006 13:12
> Nie korzystałem nigdy z DB2 UDB (tylko DB2/400), ale przejrzyj: > > "Changing or Dropping a Column in DB2": > http://www-1.ibm.com/support/docview...=utf-8&lang=en > > "Using Export": > http://publib.boulder.ibm.com/infoce...n/t0004554.htm > > "Using import": > http://publib.boulder.ibm.com/infoce...n/t0004575.htm
Dzięki za linki.
-- Jan Słupicki
mgl - 28-02-2006 13:12
Jan Słupicki wrote: > Dzięki za linki.
Daj znać, jak poszło :)
pozdrawiam, -- mgl
Krzysztof Paz - 13-03-2006 11:19
"Jan Słupicki" <j.slupicki@provider.pl> wrote in message news:dtlcve$7c9$1@atena.e-wro.net... [...] > > Chyba trzeba będzie tak zrobić. Trochę zejdzie mi na pisaniu > skryptu dropującego wszelkie constrainy i triggery ale jak nie ma wyboru > ... > Zdaje się że w DB2 nie działa konstrukcja > INSERT INTO tab1 SELECT * FROM tab2 > dla więcej niż jednego wiersza. Czy jest jakaś zgrabna konstrukcja > do skopiowania tabeli ?
nie wiem czy to będzie najlepszy sposób, ale można zadziałać tak: [db2start] [db2 connect to mojabaza] db2 create table nowa like stara db2 insert into nowa select * from stara
- z dokładnością do tego, że być może warto uzupełnić trzecie polecenie o opcje kopiowania opisane tutaj: http://publib.boulder.ibm.com/infoce...n/r0000927.htm >>-CREATE--TABLE--table-name------------------------------------>
>--+-| element-list |----------------------------+--*-----------> +-OF--type-name1--+-------------------------+-+ | '-| typed-table-options |-' | +-| materialized-query-definition |-----------+ +-| staging-table-definition |----------------+ '-LIKE--+-table-name1-+--+------------------+-' +-view-name---+ '-| copy-options |-' '-nickname----'...copy-options: These options specify whether or not to copy additional attributes of the source result table definition (table, view or fullselect). INCLUDING COLUMN DEFAULTS Column defaults for each updatable column of the source result table definition are copied. Columns that are not updatable will not have a default defined in the corresponding column of the created table. If LIKE table-name is specified and table-name identifies a base table or declared temporary table, then INCLUDING COLUMN DEFAULTS is the default.
EXCLUDING COLUMN DEFAULTS Columns defaults are not copied from the source result table definition. This clause is the default, except when LIKE table-name is specified and table-name identifies a base table or declared temporary table.
INCLUDING IDENTITY COLUMN ATTRIBUTES Identity column attributes are copied from the source result table definition, if possible. It is possible to copy the identity column attributes, if the element of the corresponding column in the table, view, or fullselect is the name of a table column, or the name of a view column which directly or indirectly maps to the name of a base table column with the identity property. In all other cases, the columns of the new table will not get the identity property. For example: a.. the select-list of the fullselect includes multiple instances of an identity column name (that is, selecting the same column more than once) b.. the select list of the fullselect includes multiple identity columns (that is, it involves a join) c.. the identity column is included in an expression in the select list d.. the fullselect includes a set operation (union, except, or intersect). EXCLUDING IDENTITY COLUMN ATTRIBUTES Identity column attributes are not copied from the source result table definition.
Inną opcją jest skorzystanie z graficznego narzędzia administracji (db2cc), w którym klikamy prawym przyciskiem na obiektem tabeli i wybieramy alter, potem wskazujemy kolumne i naciskamy remove. Narzędzie to umożliwi też podejrzenie wygenerowanego kodu realizującego takie zadanie - przykład ze strukturą tabeli EMPLOYEE bazy sample i dropowaniem kolumny JOB: CONNECT TO MOJABAZA; CALL SYSPROC.ALTOBJ ( 'APPLY_CONTINUE_ON_ERROR', 'CREATE TABLE DB2.NOWA1 ( EMPNO CHARACTER (6) NOT NULL , FIRSTNME VARCHAR (12) NOT NULL , MIDINIT CHARACTER (1) NOT NULL , LASTNAME VARCHAR (15) NOT NULL , WORKDEPT CHARACTER (3) , PHONENO CHARACTER (4) , HIREDATE DATE , EDLEVEL SMALLINT NOT NULL , SEX CHARACTER (1) , BIRTHDATE DATE , SALARY DECIMAL (9, 2) , BONUS DECIMAL (9, 2) , COMM DECIMAL (9, 2) ) IN USERSPACE1 ', 1, ? ); ; CONNECT RESET;
Pozdrawiam, Krzysztof
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
[mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
[ORACLE] Dodanie kolumny typu BLOB - =?ISO-8859-2?Q?wp=B3yw_na?==?ISO-8859-2?Q?_wydajno=B6c?=
=?ISO-8859-2?Q?=5BORACLE=2C_ORDER_BY=5D_Czy_indeksowane_?==?I SO-8859-2?Q?kolumny_przy=B6piesz=B1_sortowanie=3F?=
pytanie o zapytanie z having count = count z innej kolumny
[MySQL/PHP] Wyszukiwanie rekordu przez kolumnę wskazaną przez zmienną
=?iso-8859-2?q?Pytanie_SQL__spe=B3niaj=B1ce_wiecej_jak_jeden_ warunek_na_jednej_kolumnie=2E?=
=?iso-8859-2?Q?=5BMSSQL2005=5D_Zawarto=B6c_kolumny_varbinary= 28max=29_?=
SELECT MAX(nazwaPola) FROM tabela WHERE .... i ORA-01405: pobran? warto?ci? kolumny jest NULL
zanotowane.pldoc.pisz.plpdf.pisz.pladwokat.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|