有没有一种简单的方法可以从Linux命令行运行MySQL查询并以CSV格式输出结果?
这就是我现在正在做的事情:
mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/ /,/g' | tee list.csv
select id, concat("\"",name,"\"") as name
from students
EOQ
Run Code Online (Sandbox Code Playgroud)
当有很多列需要用引号括起来,或者结果中有引号需要转义时,它会变得混乱.
我正在学习MySQL并尝试使用一个LOAD DATA子句.当我使用它如下:
LOAD DATA INFILE "text.txt" INTO table mytable;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
MySQL服务器使用--secure-file-priv选项运行,因此无法执行此语句
我该如何处理这个错误?
我已经检查了同一错误消息的另一个问题,但仍无法找到解决方案.
我正在使用MySQL 5.6
我正在尝试使用mysql将查询结果写入文件.我在一些地方看到了关于outfile构造的一些信息,但似乎这只是将文件写入运行MySQL的机器上(在这种情况下是远程机器,即数据库不在我的本地机器上).
或者,我也尝试运行查询并从mysql工作台结果窗口中获取(复制/粘贴)结果.这适用于一些较小的数据集,但最大的数据集似乎太大,导致内存不足/错误/崩溃.
任何有关此事的帮助将不胜感激.
我有一个问题,试图使用SELECT INTO OUTFILE和使用除以外的目录/tmp.
我的Linux用户被命名datam,我的MySQL用户是lea,而MySQL运行为mysql.
当datam运行mysql -u lea database并尝试SELECT INTO OUTFILE使用路径时/home/datam/xfers/online/file.csv,我得到错误代码13,权限被拒绝.使用/tmp/file.csv作品,所以我相信它不是MySQL中的权限问题.
我已添加mysql到该论坛datam并已通过以下方式验证:
~$ sudo id mysql
uid=106(mysql) gid=114(mysql) groups=114(mysql),1001(datam)
Run Code Online (Sandbox Code Playgroud)
我/home/datam/递归设置为775.
如果我这样做sudo -u mysql /bin/bash,去/home/datam/xfers/online/,做touch file它写入一个文件.
mysql要从中写入文件,我需要做SELECT INTO OUTFILE什么?
我认为这不是围绕这个主题的其他问题的重复,因为我已经查看了它们并遵循了所有指令(在所有目录上设置执行,直到我想要的那个,设置GRANT FILE ON等).
MySQL用户lea授予:
+-----------------------------------------------------------------------------------------------------------+
| Grants for lea@localhost |
+-----------------------------------------------------------------------------------------------------------+
| GRANT FILE ON *.* …Run Code Online (Sandbox Code Playgroud) 我的理解是,默认情况下导出文件(例如 csv)MariaDB仅限于指定的文件夹。tmp因此,到目前为止,我一直在该文件夹中访问导出的文件。我想问是否有办法将其更改为另一个文件夹,即/home/user/projects?我使用 Raspbian Stretch 作为我的操作系统。作为我的 e 的 root 用户SQL databas,我检查了我是否拥有完全的授予权限。
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 查询时
MariaDB [mydatabase]> SELECT * from table1 into outfile '/home/user/projects/file1.csv';,出现以下错误:
ERROR 1 (HY000): Can't create/write to file '/home/user/projects/file1.csv' (Errcode: 13 "Permission denied"),
我还可以做些什么才能将文件导出到我选择的文件夹中?
更新:到目前为止,我尝试了 chmod 755 和 …
我知道如何在php中导出csv文件.现在我想在zendframe工作中完成这个任务.
1我想知道zend是否有为此目的提供的内置功能,或者我们必须编写我们在简单的php中使用的相同代码?
2如果我必须使用相同的代码,那么我应该把它放在模型或控制器中?
3我有一个视图,用户可以选择开始日期,最后日期和用户,然后按Enter键.在那个选择的基础上我想exprot csv文件.
任何人都指导我如何完成这项任务
mysql ×5
csv ×2
database ×2
file-io ×1
linux ×1
mariadb ×1
permissions ×1
php ×1
quotes ×1
raspberry-pi ×1