有没有一种简单的方法可以从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
我使用以下查询来创建CSV文件
SELECT email INTO OUTFILE "mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM users;
Run Code Online (Sandbox Code Playgroud)
但是当我搜索filezilla时,我无法在任何地方找到mydata.csv文件.
知道这个文件存储在哪里吗?
查询成功运行,没有任何错误!任何帮助?
我正在开发的Web应用程序支持CSV导出(使用SELECT INTO OUTFILE)并导入(使用LOAD DATA INFILE)MySQL服务器来维护庞大的数据集,这些数据集在Java代码中使用SELECT和批量INSERT语句进行处理非常昂贵(处理结果集,字符串编码,业务逻辑遗产等).这些CSV文件不是应用程序驱动的,因此它们只代表MySQL数据库中的原始表内容.但据我所知,这种方法只有在我有本地文件时才有用,所以web应用服务器和mysqld都必须在同一台机器上运行.
应用程序配置可以指定远程数据库连接.这显然意味着上传的CSV文件存储在运行Web应用程序的机器本地的某处,因此我无法在MySQL LOAD DATA INFILE语句中指定数据文件位置.(相同的方案是CSV下载请求).所以,我想要找到的是一种"虚拟"指定CSV文件的方法 - 使用可由JDBC和MySQL处理的I/O流,类似于blob管理等.
JDBC/MySQL是否支持这种用于导入和导出的CSV文件的技术?
提前致谢.