[英]Dump MySQL view as a table with data
假设我的数据库中有一个视图,我想向某人发送一个文件以创建该视图的 output 作为他们数据库中的一个表。
mysqldump 当然只导出 'create view...' 语句(好吧,它包括创建表,但没有数据)。
我所做的只是将视图复制为真实表并将其转储。 但是对于一张大桌子来说,它既慢又浪费:
create table tmptable select * from myview
如果没有创建一个模仿 mysqldump 行为的脚本并执行此操作,是否有更好的方法?
一种选择是对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'
好的,基于您的CSV失败评论,请从Paul的回答开始。 对其进行以下更改:
- FIELDS TERMINATED BY ','
+ FIELDS TERMINATED BY ',' ESCAPED BY '\'
完成后,在导入端,您将执行“加载数据infile”并使用相同的终止/封闭/转义语句。
同样的问题我的问题是我想将视图定义(84 个字段和数百万条记录)导出为“创建表”语句,因为视图可以随时间变化并且我想要一个自动过程。 所以这就是我所做的:
mysql -uxxxx -pxxxxxx my_db -e "create table if not exists my_view_def as select * from my_view limit 0;"
mysqldump -uxxxx -pxxxxxx my_db my_view_def | sed s/my_view_def/my_view/g > /tmp/my_view.sql
mysql -uxxxx -pxxxxxx my_db -e "drop table my_view_def;"
SELECT * from my_view into outfile "/tmp/my_view.csv" fields terminated BY ";" ENCLOSED BY '"' LINES TERMINATED BY '\n';
然后您将拥有两个文件,一个包含定义,另一个包含 CSV 格式的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.