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
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マニュアルページ へのリンクです。
これは実際にはすぐに挿入を行うことに注意してください。それはあなたが要求したことをまったく行いません(これは後で使用するために挿入ステートメントを生成することです)。
代わりにmysqldump
を使用できる場合があります。パラメータを確認してください--tables
および--where=
。
MySQL Workbenchを使用している場合は、挿入ステートメントを生成できます。
SQLエディターでクエリを実行し、結果セットからエクスポートボタンをクリックします。次に、[ファイルの種類]で[SQL INSERTステートメント(* .sql)]を選択します。 [保存]をクリックして、エクスポートするテーブルを確認し、[OK]をクリックします。
ファイルを開くと、結果セットが列名を含む挿入ステートメントとして表示されます。
私はこれを単純なselect * from tableでのみテストしました。私はこれを複数のテーブルでテストしていません。これがお役に立てば幸いです。
編集:ワークベンチはWindows、OSX、Linuxで利用できるようです(vcardilloに感謝)
ここを離れるだけで、誰かがMySQL
export
クエリをinsert
ステートメントとして作成するための正確なクエリを探している場合。この回答では、mysqldump
を@ a'rの提案として使用しています。
mysqldump -u<user-name> -p<password> mydb t1 t2 t3 > mydb_tables.sql
あなたはこのようなものを作ることができます:
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'
私はそれが醜いことを知っていますが、あなたのケースを解決すると思います:)