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

6

5

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.

Blowtube answered 15/11, 2013 at 15:8 Comment(0)
R
9

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.

Rhizotomy answered 15/11, 2013 at 15:29 Comment(5)
hi thanks - thought there might be a command to simply move the table into the new schema, but your way of creating a new table in the other schema from the actual table, then inserting does the job for me. but more cumbersome but that's fine.Blowtube
There's also an ADMIN_MOVE_TABLE system stored procedure that does exactly what it says, including all dependencies.Cawley
@Cawley I also thought ADMIN_MOVE_TABLE could do that, but the documentation does not have the option to provide a different schema: pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/…Rhizotomy
More information about how to move tables: ibm.com/developerworks/data/library/techarticle/…Rhizotomy
Stupid me.I'd take my comment back but it's too late.Cawley
R
7

You can easily rename a table with this statement:

RENAME TABLE SCHEMA.TABLENAME TO NEWTABLENAME;
Rush answered 17/12, 2014 at 12:59 Comment(0)
M
0

You're not renaming table in provided example, you're trying to move to different schema, it's not the same thing. Look into db2move tool for this.

Margemargeaux answered 15/11, 2013 at 15:14 Comment(0)
P
0

if you want to rename a table in the same schema, you can use like this.

RENAME TABLE schema.table_name TO "new_table_name";

Otherwise, you can use tools like DBeaver to rename or copy tables in a db2 db.

Pellicle answered 24/6, 2022 at 5:7 Comment(0)
S
-1

What if you leave it as is and create an alias with the new name and schema.

Staats answered 13/2, 2014 at 6:36 Comment(1)
Unfortunately, this doesn't actually move the table, it just creates a pointer to it. This can be useful in some situations, but will not help when the table actually needs to be moved.Eldwin
T
-2

Renaming a table means to rename a table within same schema .To rename in other schema ,db2 call its ALIAS:

db2 create alias for

Taphouse answered 29/4, 2014 at 13:36 Comment(1)
Unfortunately, this doesn't actually move the table, it just creates a pointer to it. This can be useful in some situations, but will not help when the table actually needs to be moved. Also, this is identical to an existing answer.Eldwin

© 2022 - 2024 — McMap. All rights reserved.