Подтвердить что ты не робот

Запрос экспорта MySQL в качестве операторов вставки

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

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

4b9b3361

Ответ 1

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

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

Ответ 3

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

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

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

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

EDIT: Кажется, что workbench доступен для Windows, OSX и Linux (спасибо vcardillo)

Ответ 4

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

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'  

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

Ответ 5

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

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