Azure SQL ServerにMyDb
という既存のDBがあります。複数のテーブルを含む別のDBのバックパックがあります。専用のテーブル_MyDb.dbo.ImportedTable
_に1つのテーブルをインポートすることに興味があります(そのテーブルにはFKがなく、簡単にできます)。最終的な目標は、そのテーブルを使用してデータを再構築できるようにすることです。
問題は:
MyDb.dbo.ImportedTable
_は最大60 GbですNVARCHAR(MAX)
です。そのため、AzureでElasticクエリを使用することはできません。それはタイムアウトします Elasticクエリは嫌いなのでNVARCHAR(4000)
よりも大きいもの(私は試しました)1. BCP
を使用しますが、bacpac
アーカイブ内にあるバイナリー_*.bcp
_ファイル(15'000)しかありません( Zip、データフォルダ内)
しかし、特にbacpac
で使用されている_*.bcp
_ファイル形式に関するドキュメントが見つからないため、これを機能させることができません。
tl; drAzure SQL Serverの既存のデータベースにmabacpacから単一の〜60Gbテーブルをインポートする良い方法は何ですか?
.bac
アーカイブ内の.bacpac
ファイルを単純に使用する方法はないようです。次に、bcp
に戻して、別のbcp
コマンドのソースとなるテキストファイルを作成し、新しいDBにインポートするデータを作成する必要がありました。
データをエクスポートしてファイルを作成するには:
bcp "SELECT * FROM $table WHERE someColumn = someValue" queryout "${table}.csv" -U $user -P $password -S $server -d $dbSource -N -k
そして、それを新しいテーブルとして再インポートする
bcp [$dbTarget].[dbo].[$table] IN "Fresh${table}.csv" -U $user -P $password -S $server -E -N -k