2011-08-01 25 views
4

DB:SQLサーバ1つのSQLクエリに複数の挿入がある

複数のレコードをテーブルに挿入するために、以下の構造を使用しています。他のDBから(挿入する)データを受け取りました。 セレクト '1'、 '2' UNION ALL セレクト '3'、 '4' UNION ALL セレクト '5'、 '6' TABLE1に

挿入します。

他の機会があります。また、Webリクエストとして実行されました。私は一括挿入を行うファイルにデータがないので、一括挿入はここでは合わないと思います。 何か提案してください。

答えて

0

これは実際に私が見た中で最も優れた複数の挿入物です。 SQLインジェクションに注意するだけで、常にASP.NETでCommandParametersを使用するか、MySQLでmysql_real_escapeを使用してください。

1

ソース・データベースがまたSQL Serverのであれば、あなたはリンクサーバーと追加することができます:あなたは、.NETコードから挿入している場合

insert table1 select * from linkedserver.dbname.dbo.table1 

を、複数の行を挿入する最速の方法はSqlBulkCopyです。 SqlBulkCopyにはDBO権限が必要です。

+0

データが他のデータベースにあるため、選択クエリで直接そのデータを使用することはできませんでした。私はそれを私の変数に取り込み、この挿入を行います。 –

+0

はい私は.NETから挿入しています。私は見ていますAndo –

0

私は最近、MySQLから来て、cularisの答えの構文を期待していましたが、いくつかの検索の後で、私があなたの答えに投稿した構文が見つかりました。

編集:cularisの回答が削除されたようです。彼は​​の構文について話していました。

+0

私は質問を誤読しました。これはMSSQLでは不可能です。 – Jacob

+0

@cularis SQL Server 2008+で可能です –

0

あなたはSQL Server 2008およびストアドプロシージャを使用している場合、あなたは常にテーブル値パラメータの使用を作ることができる:

http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters

それから、これは、注入の問題に対して役立つだろうINSERT INTO ... SELECT * FROM ...

になります。これがパラメータ化されたSQLで可能かどうかは不明です。

関連する問題