角括弧クォート付きSQL Server Bulk INSERT
角括弧で囲まれた識別子、BITブーリアン、NVARCHAR文字列型を持つSQL Server互換のBulk INSERT文を生成します。
Dialect Differences
詳細な説明
SQL Server固有のBulk INSERT
SQL ServerはMySQL、PostgreSQL、SQLiteとは異なる独自の構文要件を持っています。Bulk INSERTツールはSQL Serverダイアレクトを選択すると、完全に互換性のある出力を生成します。
角括弧識別子
SQL Serverは識別子のクォートに角括弧を使用します:
INSERT INTO [users] ([id], [first_name], [email])
VALUES
(1, 'Alice', 'alice@example.com'),
(2, 'Bob', 'bob@example.com');
型マッピング
SQL Serverは異なる型名を使用します:
| 標準SQL | SQL Server |
|---|---|
BOOLEAN |
BIT |
VARCHAR(n) |
NVARCHAR(n) |
TEXT |
NTEXT |
INTEGER |
INTEGER |
DECIMAL(p,s) |
DECIMAL(p,s) |
Nプレフィックス(NVARCHAR、NTEXT)はUnicodeサポートを示しており、SQL Serverの現代的な標準です。
行数制限
SQL ServerにはINSERT文あたり1,000行のハードリミットがあります。ツールはSQL Serverが選択されているとき、バッチサイズを1000に制限することでこれを遵守します。
トランザクション構文
SQL Serverは(BEGINだけでなく)BEGIN TRANSACTIONを使用します:
BEGIN TRANSACTION;
INSERT INTO [events] ([id], [type])
VALUES
(1, 'login'),
(2, 'click');
COMMIT;
CREATE TABLEの例
CREATE TABLE [products] (
[sku] NVARCHAR(255) NOT NULL,
[name] NVARCHAR(255) NOT NULL,
[price] DECIMAL(10,2) NOT NULL,
[active] BIT NOT NULL
);
UpsertのためのMERGE
SQL ServerはON CONFLICTをサポートしていません。UpsertにはMERGE文が使用されますが、Bulk操作では構文が複雑です。Upsertが選択されている場合、ツールはSQL Server向けにその旨のコメントを追加します。
ユースケース
エンタープライズアプリケーションがSQL Server上で動作しており、JSONデータエクスポートからインポートスクリプトを生成する必要がある場合。ツールは角括弧のクォート、NVARCHAR型、1000行制限を自動的に処理します。