web-dev-qa-db-ja.com

ExcelからSQLServerに1000を超える行を挿入する

私はSqlを初めて使用しますが、Excelドキュメントから私のデータベースに1000行を超える行を挿入する最良の方法は何ですか(Sql server 2008)。

たとえば、次のクエリを使用しています。

   INSERT INTO mytable(companyid, category, sub, catalogueref)
   VALUES
   ('10197', 'cat', 'sub', '123'),
   ('10197', 'cat2', 'sub2', '124')

これは正常に機能していますが、1000レコードの挿入には制限があり、19000レコードがあり、19の個別の挿入ステートメントを実行したくないので、別の質問ですが、会社IDは常に同じで、より良い方法があります19000回書いた?

11
user3545217

Microsoftは、SQL Serverに インポートウィザード を提供しています。他のデータベースやスプレッドシートからデータを移行するために使用しました。それはかなり堅牢で使いやすいです。

6
Erik Gillespie

Excelまたは別のプログラムでデータを編集して、ステートメントごとに1つの挿入でN個の挿入ステートメントを作成するだけで、挿入数は無制限になります。例えば...

INSERT INTO table1 VALUES   (6696480,'McMurdo Station',-77.846,166.676,'Antarctica','McMurdo')
INSERT INTO table1  VALUES  (3833367,'Ushuaia',-54.8,-68.3,'America','Argentina')
...19,000 later
INSERT INTO table1 VALUES   (3838854,'Rio Grande',-53.78769,-67.70946,'America','Argentina')
19
aborg88

いくつかのオプションがあります。インポートWizard Erikの提案、またはSSISは別の優れたオプションです。

ここをお読みください Excelスプレッドシートの列をSQL Serverデータベースにインポート

2
Dave Cullum

複数のトランザクションを使用して挿入できるはずです-

BEGIN TRANSACTION
 Insert into mytable(companyid,category,sub,catalogueref)
   values
   ('10197','cat', sub','123'),
   ('10197','cat2', sub2','124')
   ...998 more rows...
COMMIT TRANSACTION
go
BEGIN TRANSACTION
 Insert into mytable(companyid,category,sub,catalogueref)
   values
   ('10197','cat', sub','123'),
   ('10197','cat2', sub2','124')
   ...998 more rows...
COMMIT TRANSACTION
0
Praveen Lobo