我很难从mysql中的视图中选择数据来输出文件。
SELECT *
INTO OUTFILE '/tmp/test.txt'
FROM test_view;
我得到了以下错误:
第1行的错误1356 (HY000):查看“test_view”引用无效的表或列或函数或定义者/调用者缺乏使用它们的权限
当我只在sql中使用以下内容时,就可以了。
SELECT *
FROM test_view;
我使用mysql版本: 5.1.69
谢谢。
发布于 2021-08-06 01:57:42
即使我在数据库中使用根用户,我也遇到了同样的问题。遗憾的是,我无法解释为什么简单的SELECT
查询工作,但在使用SELECT INTO OUTFILE
时失败。
也许还有其他的解决方案,而且可能这对你不起作用,但我还是想分享我的解决方案,因为没有经过批准的答案。
在我的例子中,我检查视图定义和找到的设置,这些设置在frm-file:definer_user=<other username>
中也是可见的,但是在视图中,安全设置被设置为Definer
,而不是Invoker
。
在我的例子中,支持小组的随机人员被设置为定义者是没有意义的。我不知道SQL安全性的详细变化,所以我只是将视图的定义器更改为root@%
。
在将视图的定义器设置为root@%
(显然可以根据需要设置其他主机)之后,该语句对我很好。
发布于 2014-02-11 08:32:53
MySQL为将select语句的结果写入服务器上的文本文件提供了一种简单的机制。使用INTO OUTFILE术语的扩展选项,可以创建逗号分隔值( CSV ),该值可以导入到电子表格应用程序(如OpenOffice或Excel )或接受CSV格式数据的任何其他应用程序中。
给定一个查询,例如
SELECT order_id,product_name,qty FROM orders
返回三列数据,可以使用查询将结果放入/tmo/orders.txt文件中:
SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.txt'
这将创建一个由制表符分隔的文件,每一行都在自己的行上。要更改此行为,可以向查询添加修饰符:
SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
https://stackoverflow.com/questions/21707486
复制