MySQL导出查询作为插入语句

时间:2010-09-24 12:00:27

标签: mysql export

我有两个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;

这给了我正确的结果,但我试图将此查询导出为insert语句。我已经尝试添加INTO OUTFILE“/ path /”但这只是将数据导出为制表符/逗号分隔数据,是否可以将此数据导出为插入语句?

干杯

EEF

5 个答案:

答案 0 :(得分:45)

您可以使用mysqldump代替。查看参数--tables--where=

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

答案 1 :(得分:28)

如果您有MySQL Workbench,它可以为您生成插入语句。

在SQL编辑器中运行查询,然后从结果集中单击导出按钮。然后在“另存为类型”中选择“SQL INSERT语句(* .sql)”。单击“保存”,确认要导出的表,然后单击“确定”。

如果打开文件,您应该将结果集看作带有列名的插入语句。

我只在一个简单的select * from table上测试过它。我没有用多个表测试这个。我希望这会有所帮助。

编辑:似乎工作台可用于Windows,OSX和Linux(感谢vcardillo)

答案 2 :(得分:13)

您可以将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 manual page的链接。

请注意,这实际上会立即插入;它不会完全符合您的要求(生成插入语句以供以后使用)。

答案 3 :(得分:8)

如果有人来寻找创建MySQL export查询作为insert语句的确切查询,请将其保留在此处。此答案使用mysqldump作为@ a' r建议。

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

答案 4 :(得分: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'  

我知道这很丑,但我认为它解决了你的问题:)