0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure Synapse Analytics専用SQLプールで列名を変更する(sp_rename)

Posted at

Azure Synapase Analytics 専用SQLプールを運用していると、ごくまれに「テーブルの列名を変更したい」という要望をいただく事があります。

2020年12月までは、CTASを使って、列名を変更した新しいテーブルへ物理的にデータの移動などをやっていたのですが、2020年12月以降にプレビュー版ですが、sp_renameにて列名を変更することが可能になりました。
※ただし、sp_renameで変更できるのはユーザーオブジェクトの列名のみであり、また、Azure Synapase Analytics サーバーレスSQLプールではサポートされていません。

用途

Azure Synapase Analytics 専用SQLプールのユーザーオブジェクトのCOLUMNの名前を変更する。

使い方

sp_rename '<スキーマ名>.<テーブル名>.<カラム名>','<新しいカラム名>','COLUMN'

第一引数には、変更したいカラム名をスキーマ修飾、テーブル名修飾した状態で指定し、第二引数に新しいカラム名を指定します。第三引数はCOLUMN固定です。

実際に、sp_rename_testと言うテーブルを作成し、列名をcol1col2col3からidfirst_namelast_nameへ変更してみます。

--テーブルの作成
create table sp_rename_test
(
	 col1 int
	,col2 nvarchar(100)
	,col3 nvarchar(100)
);
--カラム名の確認
select 
   t.name
  ,c.name column_name
from 
  sys.tables t inner join sys.columns c on 
    t.object_id = c.object_id 
where 
  t.name = 'sp_rename_test'
order by 
  c.column_id
;

image.png

上記の通り、作成できたので、カラム名を変更します。

--カラム名の変更
sp_rename 'dbo.sp_rename_test.col1','id','COLUMN'
sp_rename 'dbo.sp_rename_test.col2','first_name','COLUMN'
sp_rename 'dbo.sp_rename_test.col3','last_name','COLUMN'
--カラム名の確認
select 
   t.name
  ,c.name column_name
from 
  sys.tables t inner join sys.columns c on 
    t.object_id = c.object_id 
where 
  t.name = 'sp_rename_test'
order by 
  c.column_id
;

image.png

備考

ディストリビューション列はカラム名変更ができないので注意が必要です。

--テーブルの作成(COL1をハッシュキー(ディストリビューション列)に指定)
create table sp_rename_test2
(
	 col1 int
	,col2 nvarchar(100)
	,col3 nvarchar(100)
)
WITH
(   DISTRIBUTION = HASH(col1))
;
--カラム名の変更(col1→id)
sp_rename 'dbo.sp_rename_test2.col1','id','COLUMN'

エラー
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?