web-dev-qa-db-ja.com

挿入ステートメントとしてのMySQLエクスポートクエリ

2つのmysqlテーブルがあり、両方に共通のtypeIDがあります。同じtypeIDを持つこれら2つのテーブルからすべてを選択したいのですが、以下のクエリを実行します。

SELECT ta.requiredTypeID, ta.typeID, ta.quantity 
  FROM `invtypes` as t, `typeactivitymaterials` as ta 
  WHERE volume > 0 AND t.typeID = ta.typeID;

これにより正しい結果が得られますが、このクエリを挿入ステートメントとしてエクスポートしようとしています。 INTO OUTFILE "/ path /"を追加しようとしましたが、これはデータをタブ/カンマ区切りデータとしてのみエクスポートします。このデータを挿入ステートメントとしてエクスポートすることは可能ですか?

乾杯

Eef

22
RailsSon

INSERTとSELECTを組み合わせて、selectステートメントの結果から直接レコードを挿入できます。

それを行う方法は次のようなものです:

INSERT INTO newtable (requiredTypeID, typeID, quantity)
     SELECT ta.requiredTypeID, ta.typeID, ta.quantity 
         FROM `invtypes` as t, `typeactivitymaterials` as ta 
         WHERE volume > 0 AND t.typeID = ta.typeID;

これは関連する MySQLマニュアルページ へのリンクです。

これは実際にはすぐに挿入を行うことに注意してください。それはあなたが要求したことをまったく行いません(これは後で使用するために挿入ステートメントを生成することです)。

14
Spudley

代わりにmysqldumpを使用できる場合があります。パラメータを確認してください--tablesおよび--where=

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

45
a'r

MySQL Workbenchを使用している場合は、挿入ステートメントを生成できます。

SQLエディターでクエリを実行し、結果セットからエクスポートボタンをクリックします。次に、[ファイルの種類]で[SQL INSERTステートメント(* .sql)]を選択します。 [保存]をクリックして、エクスポートするテーブルを確認し、[OK]をクリックします。

ファイルを開くと、結果セットが列名を含む挿入ステートメントとして表示されます。

私はこれを単純なselect * from tableでのみテストしました。私はこれを複数のテーブルでテストしていません。これがお役に立てば幸いです。

編集:ワークベンチはWindows、OSX、Linuxで利用できるようです(vcardilloに感謝)

32
Yodacheese

ここを離れるだけで、誰かがMySQLexportクエリをinsertステートメントとして作成するための正確なクエリを探している場合。この回答では、mysqldumpを@ a'rの提案として使用しています。

mysqldump -u<user-name> -p<password> mydb t1 t2 t3 > mydb_tables.sql
10
Anil Bhaskar

あなたはこのようなものを作ることができます:

select 
       concat(
         concat(
           concat(
             concat(
               concat(
                 concat('insert into <table> (requiredTypeID, typeID, quantity) values ("'
                        ,ta.requiredTypeID)
               ,'", "')
             ,ta.typeID)
           ,'", "')
         ,ta.quantity)
       ,'")')
FROM 
       `invtypes` as t, `typeactivitymaterials` as ta 
WHERE 
       volume > 0 AND t.typeID = ta.typeID;
INTO OUTFILE 'file_name'  

私はそれが醜いことを知っていますが、あなたのケースを解決すると思います:)

4
CristiC