2009-02-12 96 views
10

假设我在数据库中有一个视图,并且我想将文件发送给某人以在数据库中将该视图的输出创建为表格。将MySQL视图转储为包含数据的表格

mysqldump当然只输出'create view ...'语句(好吧,它包括create table,但没有数据)。

我所做的只是将视图复制为真实的表格并转储它。但是,对于一个大表它的速度慢和浪费:

create table tmptable select * from myview 

短创建模拟行为的mysqldump和这样做,有没有更好的办法的脚本吗?

+0

该视图包含一个空间列,在使用CSV文件导入时遇到了问题。 :( – barryhunter 2009-02-12 14:06:22

+1

有点关闭这个循环,最后轮到整理和释放脚本,我策划解决这个问题。https://github.com/barryhunter/fakedump - 它的含义是,只是运行一个查询,如“ select * from view“,然后将其写入mysqldump格式如下: – barryhunter 2017-08-27 12:49:37

回答

4

一种选择是对CSV文件进行查询并导入该文件。要选择到一个CSV文件:

http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/

SELECT order_id,product_name,qty 
FROM orders 
INTO OUTFILE '/tmp/orders.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
+1

如果你不能访问mysql服务器shell,这是行不通的,其他解决方案? – 2009-11-01 20:33:35

3

好了,根据您的CSV故障评论,开始与保罗的回答。进行以下修改时:

- FIELDS TERMINATED BY ',' 
+ FIELDS TERMINATED BY ',' ESCAPED BY '\' 

当你做完这些后,在进口方面,你会做一个“LOAD DATA INFILE”,并使用相同的终止/封闭/逃脱语句。