繁体   English   中英

MySQL导出查询作为插入语句

[英]MySQL export query as insert statements

我有两个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 /”但这只是将数据导出为制表符/逗号分隔数据,是否可以将此数据导出为insert语句?

干杯

EEF

您也许可以使用mysqldump 查看参数--tables--tables --where=

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

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

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

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

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

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

您可以将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手册页的链接。

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

如果有人来寻找创建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'  

我知道它很丑,但我认为它解决了你的情况:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM