Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how can I rename a table / move to a different schema in sql DB2?

I am trying to rename a table in db2 like so

rename table schema1.mytable to schema2.mytable

but getting the following error message:

the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601

what is the problem here.... I am using the exact syntax from IBM publib documentation.

like image 653
brucezepplin Avatar asked Nov 15 '13 15:11

brucezepplin


People also ask

How do I change the table name in schema?

To change the schema and table name both, first we have to rename the table using SP_RENAME and then transfer the schema using ALTER SCHEMA command.

Can we change schema name in DB2?

Answer. 2) In the outputfile. sql file, find and change the schema to your new schema name. You can use UNIX text editor Vi and edit the file by use the following command ":1,$s/<SEARCH>/<REPLACE>/g" to search and replace or use any text editor that you desire.

How do you change the name of an existing table in SQL?

Click the SQL tab at the top. In the text box, enter the following command: ALTER TABLE exampletable RENAME TO new_table_name; Replace exampletable with your table's name and replace new_table_name with the new name for your table.


1 Answers

You cannot change the schema of a given object. You have to recreate it.

There are severals ways to do that:

  • If you have only one table, you can export and import/load the table. If you use the IDX format, the DDL will be included in the generated file. If using another format, the table has be created.
  • You can recreate the table by using:

    Create table schema2.mytable like schema1.mytable

  • You can extract the DDL with the db2look tool

  • If you are changing the schema name for a schema given, you can use ADMIN_COPY_SCHEMA

These last two options only create the table structure, and you still need to import the data. After having create the table, you insert the data by different ways:

  • Inserting directly

    insert into schema2.mytable select * from schema1.mytable

  • Via load from cursor

  • Via a Load or import from file (The file exported in the previous step)

The problem is the foreign relations, because they have to be recreated.

Finally, you can create an alias. It is easier, and you do not have to deal with relations.

like image 200
AngocA Avatar answered Nov 15 '22 10:11

AngocA