SQLの窓 イラストAC フリー素材

2009年04月03日

BCP.EXEで自動採番列(INTIDENTITY)を持つデータの移行

SQLServer を知らないと何の事が全く解らないお話です。

一般的に言うと、データベースの列定義( Excel 等の表のタイトルのようなもの ) に
特殊な属性を指定すると、データを作成する時に、その列には何もいれなくても、
データベースが連続する番号をセットしてくれるというものです。

ちゃんとしたシステム設計では、使わないほうが良いとされている機能ですが、
プロがお金を取って作るシステム以外なら、時間短縮や効率考えて使われている
事が多いものです。

で、落とし穴。

外部にデータをバックアップしておいて、イザ、それを戻す時に、
自動的に番号を付けてしまうので、バックアップしたデータの番号が無視されてしまいます。
その番号は、ふつう主キーと呼ばれる ID になっていますので、変えるわけにはいきません。

データによって、データを元に戻す方法には何通りかありますが、
BCP というのは、コマンドラインで 主に CSV 形式のテキストファイルとして
データベースからデータを出力したり、データベースにデータを戻したりするものです。
SQLServer を扱っていて、これを知らなかったら完全に「モグリ(潜り)」ですね。


前置きが長くなりましたが、要は -E つけるだけです。






【DB関連の最新記事】
posted by at 2009-04-03 14:23 | DB関連 | このブログの読者になる | 更新情報をチェックする