web-dev-qa-db-ja.com

特定の列をINSERTステートメントにエクスポートする

特定の列と固定数の行をテーブルからINSERTステートメントにエクスポートする方法はありますか?

大規模な実稼働テーブルに基づいてユニットテスト用にこれらを生成しようとしているので、SQL Server Management Studioの「スクリプトの生成」のようなものを使用することは問題外です。

これを実行できるツールはいくつかありますが、MySQLでそれほど些細なことは、SQL Serverではそれほど複雑ではないはずです(少なくとも私はそうは思わないでしょう)。

ありがとう!

4
Robin

インポート/エクスポートウィザードを使用し、テーブル全体をエクスポートする代わりに、sqlを選択して特定の行と列をエクスポートします。

あなたはSQLを次のように書くことができます:select column1, column2 from Table1 where some_conditionまたは、特定のデータを気にしない場合は、topコマンドを使用して、必要な数の行を抽出できます。

編集:以下は、インポートエクスポートのスクリーンショットですWizard(SSMSから起動)):

enter image description here

enter image description here

enter image description here

編集:

@ロビンあなたの状況では、あなたは2つのことをすることができます-

  1. テストデータを生成する Redgateのsqlデータジェネレーター のようなものに移動します-OR-
  2. 私が提案したようにデータを1回インポートしてからデータベースをバックアップし、残りのテストでは、バックアップからデータベースを復元し続けることができます(インポートしたデータは変更されないことに注意してください)。私はあなたが達成したいことをする別の方法を考えることができないので、他の人が答えるためにこれを保ちます...
3
Kin Shah

これが私があなたが望んでいたことを正確に行うためにしたことです...

(また、一部のテーブルの一部をApacheサーバーに転送するために、MySQLで挿入ステートメントが必要でした。そのため、構文が異なる場合があります)。

 SELECT CONCAT(
'INSERT INTO `db_name`.`table_name`
(`col1`,
`col2`,
`col3`)
VALUES
(
' , [col1] , ','
, [col2], ','
, [col3], ');'
)
FROM [dbo].[db_name]
  where col5 = 'some condition';

次に、結果を右クリックして、CSVファイルとして保存できます。次に、notepad ++でCSVファイルを開き、すべての二重引用符を "なしに置き換えます。

そして、volahにはmysqlworkbenchで実行し、必要な特定の列のみを別のデータベースに転送するための7000のinsertステートメントがありました。

ワークベンチまたはmssmsを使用して、いずれかのプログラムでテーブルを右クリックし、選択したステートメントにコピーすることにより、開始点として宛先テーブルの挿入ステートメントを生成できます。

このメソッドの優れている点は、挿入を実行する宛先で、ソースとは異なる列名が使用されている可能性があることです。

0
Bradley Hayes

ツールsqlツールなどのdbbeaverを使用している場合、結果を取得した後、「select col1、col2、.. from table_name where condition」と書き込みます。結果パネルから選択して、以下に示すように挿入ステートメントを生成します

enter image description here

0
Abdul Khadeer