MySQL экспортный запрос как оператор вставки - PullRequest
21 голосов
/ 24 сентября 2010

У меня есть две таблицы mysql, которые имеют общий typeID. Я хочу выбрать все из этих двух таблиц с одинаковым typeID, запрос ниже:

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

Ответы [ 5 ]

45 голосов
/ 24 сентября 2010

Вместо этого вы можете использовать mysqldump. Проверьте параметры --tables и --where=.

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

28 голосов
/ 23 апреля 2013

Если у вас есть MySQL Workbench, он может генерировать операторы вставки для вас.

В редакторе SQL запустите ваш запрос, затем из набора результатов вы можете нажать кнопку экспорта.Затем в поле «Сохранить как тип» выберите «Операторы SQL INSERT (* .sql)».Нажмите Сохранить, подтвердите таблицу, которую вы экспортируете, и нажмите ОК.

Если вы откроете файл, вы увидите свой набор результатов в виде операторов вставки с именами столбцов.

Я проверял это только на простом выборе * из таблицы.Я не проверял это с несколькими таблицами.Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Похоже, что верстак доступен для Windows, OSX и Linux (спасибо vcardillo)

13 голосов
/ 24 сентября 2010

Вы можете комбинировать 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 .

Обратите внимание, что это действительно сделает вставку сразу; он не будет делать то, что вы просили (то есть генерировать операторы вставки для дальнейшего использования).

8 голосов
/ 30 августа 2017

Просто оставьте это здесь, если кто-то ищет точный запрос для создания MySQL export запроса в виде insert операторов. Этот ответ использует mysqldump как предложение @ a'r.

mysqldump -u<user-name> -p<password> mydb t1 t2 t3 > mydb_tables.sql
4 голосов
/ 24 сентября 2010

Вы можете сделать что-то вроде этого:

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'  

Я знаю, что это уродливо, но я думаю, что это решает ваш случай :) 1004 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...