Azure SQL DatabaseにbcpコマンドでCSV/TXTファイルを一括インポートする

こんばんは。本日は、Azure SQL DatabaseにCSVファイルを一括登録する手段として、bcpコマンドを使った方法の手順を確認したので、メモとして残しておきます。

なお、このbcpコマンドはAzure SQL Databaseに限らずSQL Serverで共通して使えるコマンドなので、オンプレのSQL Serverなどに対しても使える手順です。(昨今はAzure SQL Databaseを使うケースが多いだろうなぁと思いこういうタイトルにしています)

それではまいります。

Contents

bcpコマンドとは

こちらにまとめました。

Azure SQL Databaseに対してbcpコマンドでCSV/TXTデータを一括登録する

前提

・クライアント端末側でbcpコマンドが使えるようになっていること。bcpコマンドは、以下リンクからsqlcmdユーティリティをインストールすることで使えるようになります。

https://docs.microsoft.com/ja-jp/sql/tools/sqlcmd-utility?view=sql-server-ver15&preserve-view=true

・Azure SQL Databaseリソースが存在していること

手順

ありがたいことに、Microsoftの公式ドキュメントに説明がのっていましたので、この通り進めてみます。

https://docs.microsoft.com/ja-jp/azure/azure-sql/load-from-csv-with-bcp#3-load-the-data

準備:ターゲットテーブルの作成

bcpユーティリティを含んでいるsqlcmdを使うと、リモートからテーブルの作成が行えます。今回は、お試しなので、テーブルを作るところから試してみました。

以下コマンドを実行します。

*コマンドプロンプトからこの通り実行すると改行でクエリが分断されて認識されてエラーがでてしまったので、対処療法的には改行を消して実行するとうまくいくと思います。

sqlcmd.exe -S <server name> -d <database name> -U <username> -P <password> -I -Q "
    CREATE TABLE DimDate2
    (
        DateId INT NOT NULL,
        CalendarQuarter TINYINT NOT NULL,
        FiscalQuarter TINYINT NOT NULL
    )
    ;
"

クエリ実行後、Azure SQL Database上にテーブルが作成されたことを確認します。(ツールはなんでもよいですが、今回はAzure Data Studioを使っています)

準備:ローカルでアップロード用ファイルを作成

手順の通り、アップロード用データを作成します。今回は、.txt形式で作成します。

bcpコマンドによる一括インサート

以下コマンドを実行します。

bcp DimDate2 in C:\Temp\DimDate2.txt -S <ServerName> -d <DatabaseName> -U <Username> -P <password> -q -c -t  ,

すると、一瞬でデータが入りました。(今回は12行だけですしね・・)

データ登録完了確認

最後に、またローカルからsqlcmdを使って、Azure SQL Databaseにデータが正常に登録されたことを確認します。

sqlcmd.exe -S <server name> -d <database name> -U <username> -P <password> -I -Q "SELECT * FROM DimDate2 ORDER BY 1;"

以上、とても簡単に実現することができました・・・!

Azure SQL Databaseにデータを一括インポートする他の方法

今回、bcpコマンドによる方法を試してみましたが、他にもSQL ServerのBULK INSERT T-SQLを使う方法もあります。また、そちらの方が高速にインポートできるとの実験結果もありますので、そのあたり含めて以下の記事で紹介しています。

こちらも参考になりましたら幸いです。

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。