角括弧クォート付き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プレフィックス(NVARCHARNTEXT)は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行制限を自動的に処理します。

試してみる — JSON to Bulk INSERT

フルツールを開く