.csvファイルから非常に大きなデータセットをSQL Server 2012データベースにダンプしようとしています。何千ものINSERTを行うのではなく、私はbcp
を調べています。BCPはエラーを返さず、行もコピーしません。
編集:これは自動化されたプロセスであり、単発ではありません。このデータベースには、BULK INSERT
の権利もありません。 bcp
私はデータベースにデータをコピーしようとするとエラーは返されませんが、実際には何もコピーされません。ちょうど0 rows copied
が返されます。私はこれを最小限のケースにまで縮小してしまいました。
まず、2つのカラムを持つ簡単なテーブルを作成します。
CREATE TABLE [dbo].[mincase](
[key] [varchar](36) NOT NULL,
[number] [int] NOT NULL
PRIMARY KEY CLUSTERED
(
[key] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 40) ON [PRIMARY]
) ON [PRIMARY]
GO
を次に、この形式のファイルを作成するためにbcp
を使用しています。この例ではXML形式のファイルを作成しますが、これがXMLであるかネイティブであるかは関係ありません。
bcp MyDB.dbo.mincase format nul -T -n -f mincasexml.fmt -x -S .\SQLEXPRESS
ここで、1行と2つのエントリをタブ区切りにしてdata.csvファイルを作成します。私の場合、ファイルは単純です:
somecharacters 12345
ここでも、それはタブではなく、二つの空間だし、末尾の改行があるか否かは関係していないようです。
今、このファイルからデータを挿入するためにその形式のファイルでbcp
を使用しよう:
Starting copy...
0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 1
、誰もが知っています:
bcp MyDB.dbo.mincase in data.csv -f mincasexml.fmt -T -S .\SQLEXPRESS
ではなく、データベースにデータをコピー、私はこれを取得します何が起きてる?
ありがとうございます!
あなたはIMPORT DATAオプションを試しましたか? –