标签: into-outfile

如何使用SELECT INTO OUTFILE绕过MySQL Errcode 13?

我试图使用MySQL SELECT INTO OUTFILE语句将表的内容转储到csv文件.如果我做:

SELECT column1, column2
INTO OUTFILE 'outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
Run Code Online (Sandbox Code Playgroud)

outfile.csv将在服务器上创建,该数据库的文件存储在同一目录中.

但是,当我将查询更改为:

SELECT column1, column2
INTO OUTFILE '/data/outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
Run Code Online (Sandbox Code Playgroud)

我明白了:

ERROR 1 (HY000): Can't create/write to file '/data/outfile.csv' (Errcode: 13)
Run Code Online (Sandbox Code Playgroud)

Errcode 13是一个权限错误,但即使我将/ data的所有权更改为mysql:mysql并赋予它777权限,我也能得到它.MySQL以用户"mysql"运行.

奇怪的是我可以在/ tmp中创建文件,只是没有在我尝试过的任何其他目录中,即使权限设置使得用户mysql应该能够写入目录.

这是在Ubuntu上运行的MySQL 5.0.75.

mysql sql into-outfile

114
推荐指数
6
解决办法
15万
查看次数

使用SELECT INTO OUTFILE时包含标题?

使用MySQL时是否可能以某种方式包含标题INTO OUTFILE

mysql into-outfile

104
推荐指数
8
解决办法
15万
查看次数

MYSQL进入outfile"访问被拒绝" - 但我的用户有"全部"访问..并且该文件夹是CHMOD 777

有任何想法吗?

SELECT * INTO OUTFILE '/home/myacnt/docs/mysqlCSVtest.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '*'
LINES TERMINATED BY '\n'
FROM tbl_property 
WHERE managerGroupID = {$managerGroupID}
Run Code Online (Sandbox Code Playgroud)

错误:

Access denied for user 'asdfsdf'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

mysql mysql-error-1045 into-outfile

70
推荐指数
4
解决办法
14万
查看次数

MySQL INTO OUTFILE覆盖现有文件?

我写了一个大的sql脚本来创建一个CSV文件.我想每晚打电话给cronjob来创建一个新的CSV文件,并在网站上提供.

比如说我将我的文件存储在'/home/sites/example.com/www/files/backup.csv'中

我的SQL是

SELECT * INTO OUTFILE '/home/sites/example.com/www/files/backup.csv'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM ( ....
Run Code Online (Sandbox Code Playgroud)

当文件已经存在时,MySQL给我一个错误

档案'/home/sites/example.com/www/files/backup.csv'已经存在

有没有办法让MySQL覆盖文件?

我可以让PHP检测文件是否存在并在再次创建之前将其删除但如果我可以直接在MySQL中执行它会更简洁.

php mysql sql into-outfile

51
推荐指数
2
解决办法
6万
查看次数

MySQL导出到outfile:CSV转义字符

我有一个包含一些常见字段的时间表数据库表.

id, client_id, project_id, task_id, description, time, date 
Run Code Online (Sandbox Code Playgroud)

还有更多,但这就是它的要点.

我在该表上运行导出过夜的CSV文件,以便为用户提供其数据的备份.它还用作带有一些自定义报告的宏Excel文件的数据导入.

这一切都与我一起使用php循环遍历时间表并将行打印到文件.

问题在于大型数据库可能需要数小时才能运行,这是不可接受的.所以我用MySQL INTO OUTFILE命令重新编写它,它将它减少到几秒钟才能运行,这很棒.

现在的问题是我似乎无法在描述字段中转义所有新行字符等.实际上,用户可以在此输入任何字符组合,包括回车/新行.

这是我的MySQL代码的片段:

SELECT id, 
       client,
       project,
       task,
       REPLACE(REPLACE(ifnull(ts.description,''),'\n',' '),'\r',' ') AS description, 
       time,
       date  
      INTO OUTFILE '/path/to/file.csv'
      FIELDS ESCAPED BY '""'
      TERMINATED BY ',' ENCLOSED BY '"'
      LINES TERMINATED BY '\n'
      FROM ....
Run Code Online (Sandbox Code Playgroud)

但...

当我尝试查看输出文件的来源时,文件中仍然存在换行符,因此Excel的CSV导入会破坏Excel向导创建的所有奇特的宏和数据透视表.

关于最佳行动方案的任何想法?

mysql sql excel into-outfile

43
推荐指数
2
解决办法
14万
查看次数

MySQL - SELECT*INTO OUTFILE LOCAL?

MySQL太棒了!我目前正在参与主要的服务器迁移,之前,我们的小型数据库曾经与客户端托管在同一台服务器上.
所以我们习惯这样做:SELECT * INTO OUTFILE .... LOAD DATA INFILE ....

现在,我们将数据库移动到另一台服务器,SELECT * INTO OUTFILE ....不再有效,可以理解 - 我相信安全原因.但是,有趣的LOAD DATA INFILE ....是可以改为LOAD DATA LOCAL INFILE ....和bam,它有效.

我不是抱怨,也不是我对MySQL的厌恶.替代方案增加了2行额外代码和系统调用形成.sql脚本.所有我想知道的是为什么LOAD DATA LOCAL INFILE有效,为什么没有这样的东西SELECT INTO OUTFILE LOCAL

我完成了我的作业,找不到上述问题的直接答案.我找不到@MySQL的功能请求.如果有人能够清除它,那就太棒了!

MariaDB能够处理这个问题吗?

mysql sql mariadb into-outfile

41
推荐指数
3
解决办法
10万
查看次数

将MySQL源结果输出到日志文件

我试图在MySQL中使用source命令执行foo.sql.

当我键入命令时,文件来源相应:

mysql> source ~/foo.sql
Run Code Online (Sandbox Code Playgroud)

现在,在这个文件中执行了很多语句,我想回顾一下这些语句的成功/失败.有没有办法可以将语句的结果传递给日志文件foo.txt?

我正在思考以下问题:

mysql> source ~/foo.sql into outfile ~/foo.txt
Run Code Online (Sandbox Code Playgroud)

但是,键入此命令似乎假定源语句后面的所有内容都是一个文件名; 所以它试图将一个名为'〜/ foo.sql的文件发送到outfile~/foo.txt',这显然不存在.

mysql sql into-outfile

22
推荐指数
1
解决办法
2万
查看次数

MySQL选择outfile/tmp没有输出

我无法获得以下代码来生成任何输出.MySQL用户具有"所有"授权级别,/ tmp是可写的,查询返回结果集.

mysql> SELECT field FROM test_table WHERE condition='test'
    -> INTO OUTFILE '/tmp/test.csv'
    -> FIELDS TERMINATED BY ','
    -> ENCLOSED BY '"'
    -> LINES TERMINATED BY '\n';
Query OK, 1 row affected (0.00 sec)

mysql>
[1]+  Stopped                 mysql
[root@web1 ~]# cat /tmp/test.csv
cat: /tmp/test.csv: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果发生故障,我应该看到MySQL的不同输出吗?

我可以比"1行受影响"更进一步验证结果吗?

mysql sql into-outfile

15
推荐指数
2
解决办法
2万
查看次数

查询输出到文件会给出拒绝访问错误

我试图使用以下查询捕获MySQL中的SQL查询的输出到文本文件.

select count(predicate),subject from TableA group by subject into outfile '~/XYZ/output.txt';
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

ERROR 1045(28000):用户'用户名'@'%'的访问被拒绝(使用密码:是)

任何想法,我哪里错了?是一些与许可相关的问题吗?

mysql sql mysql-error-1045 into-outfile

14
推荐指数
1
解决办法
2万
查看次数

MySQL查询将输出打印为CSV到标准输出

我想做以下事情 mysql -uuser -ppass -h remote.host.tld database < script.sql

其中script.sql包含以下内容

SELECT *
FROM webrecord_wr25mfz_20101011_175524
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)

我希望CSV输出指向标准输出.原因是因为使用an运行此查询INTO OUTFILE 'blah.csv'将保存远程主机上的文件.我希望文件保存在本地主机上.

如果我可以将标准输出重定向到文件,那将是花花公子.

mysql sql into-outfile

13
推荐指数
2
解决办法
6194
查看次数

标签 统计

into-outfile ×10

mysql ×10

sql ×8

mysql-error-1045 ×2

excel ×1

mariadb ×1

php ×1