演習 - データを Azure SQL Database に読み込む
データの一括読み込みを行うときは、どこかから取得する必要があります。 Azure では、Azure Blob Storage にデータを格納またはダンプするのが一般的です。 Blob Storage は、比較的低コストで大量の非構造化データを格納できるよう最適化されています。
このシナリオでは、Adventure Works Cycles は店舗の ID 番号に基づいて店舗返品データを受け取ります。 このデータは .dat ファイルに格納され、Azure Blob Storage にプッシュされます。 データが Blob Storage に格納されたら、Azure SQL でそれにアクセスする方法が必要です。 ストレージ アカウントにアクセスできる外部データ ソースを作成することで、それを行うことができます。 そのストレージ アカウントへのアクセスは、Microsoft Entra ID、共有キーの認可、または Shared Access Signature (SAS) を使用して制御できます。
この演習では、sqlcmd で T-SQL を使用して Azure BLOB ストレージから Azure SQL Database にデータを一括読み込みする 1 つのシナリオについて説明します。
を使用して Azure SQL Database にデータを読み込む sqlcmd
sqlcmd
は、コマンド ラインを使用して SQL Server および Azure SQL を操作できるコマンド ライン ツールです。 この演習では、Azure Cloud Shell の PowerShell インスタンスで sqlcmd
を使用します。
sqlcmd
は既定でインストールされるので、Azure Cloud Shell から簡単に使用できます。
Azure Cloud Shell for Bash の構成方法のため、まず、 Azure Cloud Shell で次のコマンドを実行してターミナル モードを変更する必要があります。
TERM=dumb
サーバー名とパスワードを自分のものに変更した後、統合ターミナルで次のコマンドを実行します。
sqlcmd -S <server name>.database.windows.net -P <password> -U cloudadmin -d AdventureWorks
読み込むデータのためのテーブルとスキーマを作成します。 このプロ説は、単純な T-SQL です。 データベースに接続したので、ターミナルで次のスクリプトを実行します。
DROP TABLE IF EXISTS holiday CREATE TABLE [dbo].[holiday]( [countryOrRegion] [varchar](255) NULL, [holidayName] [varchar](255) NULL, [normalizeHolidayName] [varchar](255) NULL, [isPaidTimeOff] [varchar](255) NULL, [countryRegionCode] [varchar](255) NULL, [date] varchar(255) NULL ) ON [PRIMARY];
ヒント
T-SQL ステートメントの後に数値エントリが表示されます。 これは、T-SQL エントリの各行を表します。 たとえば、上のコマンドは
26
で終了します。 これらの行の後には 必ず Enter キーを押 してください。1>
が再び表示されると、コマンドが終了したことがわかります。これは、sqlcmd
に次の T-SQL エントリの最初の行を入力する準備ができたことを示します。コンテナーに対する外部データ ソースを作成します。
DROP EXTERNAL DATA SOURCE holiday_dataset; CREATE EXTERNAL DATA SOURCE holiday_dataset WITH ( TYPE = BLOB_STORAGE, LOCATION = 'https://fabrictutorialdata.blob.core.windows.net/sampledata/Fabric/Holiday' );
店舗返品ファイルの 1 つを一括挿入します。 次のスクリプトを実行し、完了するまでに、コメントを確認します。
SET NOCOUNT ON -- Reduce network traffic by stopping the message that shows the number of rows affected BULK INSERT holiday -- Table you created previously FROM 'Holiday.csv' -- Within the container, the location of the file WITH (DATA_SOURCE = 'holiday_dataset' -- Using the external data source from step 6 , FORMAT = 'CSV' , FIRSTROW = 2 , FIELDTERMINATOR = ',' , ROWTERMINATOR = '0x0a' , CODEPAGE = '65001' ,BATCHSIZE=100000 -- Reduce network traffic by inserting in batches , TABLOCK -- Minimize number of log records for the insert operation );
テーブルに挿入された行の数を確認します。
SELECT COUNT(*) FROM holiday; GO
すべてが正常に実行された場合、
274
が返されるはずです。
このコードは、Blob Storage から Azure SQL Database にデータを挿入する方法の簡単な例です。 演習をもう一度行いたい場合は、次のコードを実行して、行った内容をリセットします。
DROP EXTERNAL DATA SOURCE holiday_dataset
DROP TABLE holiday
GO