免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 9864 | 回复: 21

【讨论中】mysql into outfile 到外部文件用变量的问题。 [复制链接]

论坛徽章:
0
发表于 2012-10-31 12:07 |显示全部楼层
本帖最后由 cenalulu 于 2012-11-05 15:29 编辑

   想用 mysql into outfile 把 表的信息倒到外面 但发现文件不能被自动覆盖。有什么方法将名字用变量替换吗?或直接覆盖。谢谢。

论坛徽章:
0
发表于 2012-10-31 13:07 |显示全部楼层
回复 1# chinasjok
select into outfile的限制:如果此文件在能在host上存在的。

不知道你用的什么脚本处理数据导出的。

方法1)数据导出前,检查文件是否存在,存在则删除

方法2) mysql --skip-column-names -D 库名  -e "select * from xxxx" > filename

建议方法2, 因为outfile只能导在数据库服务器, 2的方法,导到MySQL命令运行的客户机上。





   

论坛徽章:
0
发表于 2012-10-31 14:05 |显示全部楼层
RogerZhuo 发表于 2012-10-31 13:07
回复 1# chinasjok
select into outfile的限制:如果此文件在能在host上存在的。


我想实现的是 用powerdns 的前台 poweradmin 将写到数据库里面的ZONE 信息,导出生成标准ZONE FILE 给BIND用,不用powerdns。
因为对BIND 还算有点认识,所以以后出问题好维护些。

所以我就对 poweradmin 的表做了一个mysql 触发器,相关表有变动就导出数据,后续的标准文件生成与检查就好办了。

不知有更好的建议没有。多谢!

论坛徽章:
0
发表于 2012-10-31 14:10 |显示全部楼层
RogerZhuo 发表于 2012-10-31 13:07
回复 1# chinasjok
select into outfile的限制:如果此文件在能在host上存在的。



或者这个名字能不能是我表里的字段值?

论坛徽章:
1
巳蛇
日期:2014-08-21 15:09:09
发表于 2012-10-31 14:14 |显示全部楼层
回复 4# chinasjok


    这个名字不能覆盖的。关系到系统的权限。

论坛徽章:
0
发表于 2012-10-31 14:18 |显示全部楼层
pandorabag 发表于 2012-10-31 14:14
回复 4# chinasjok


操作系统权限?都是mysql 用户 且已经生成一遍了,为什么在执行就没有权限了?

mysql> set @file='test_file';
Query OK, 0 rows affected (0.00 sec)

mysql> select * from a into outfile @file;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@file' at line 1

total 40K
-rw-rw---- 1 mysql mysql 8.4K Oct 31 09:39 a.frm
-rw-rw-rw- 1 mysql mysql   38 Oct 31 10:48 a.txt
-rw-rw---- 1 mysql mysql   33 Oct 31 10:53 auto_create.TRN
-rw-rw---- 1 mysql mysql   33 Oct 31 10:53 auto_delete.TRN
-rw-rw---- 1 mysql mysql   33 Oct 31 10:54 auto_update.TRN
-rw-rw---- 1 mysql mysql  487 Oct 31 10:54 a.TRG
-rw-rw-rw- 1 mysql mysql   51 Oct 31 11:13 @file

我直接用变量的话报错,加单引号 直接变成了字符  sql 这里完全不懂呀。

论坛徽章:
0
发表于 2012-10-31 14:32 |显示全部楼层
回复 5# pandorabag
这个是MySQL用户在MySQL中具体File权限的才能做导出操作.
同时你指向导出文件目录,那得要mysqld线程所有者有权限,一般指定mysql.mysql

   

论坛徽章:
0
发表于 2012-10-31 14:38 |显示全部楼层
回复 6# chinasjok
这是SQL语法错误,如果要Sql使用变量,就用动态SQL吧。

   

论坛徽章:
1
巳蛇
日期:2014-08-21 15:09:09
发表于 2012-10-31 14:52 |显示全部楼层
回复 7# RogerZhuo


    即使存在mysql.mysql的同名文件也不能覆盖,这是出于安全考虑的。

论坛徽章:
1
巳蛇
日期:2014-08-21 15:09:09
发表于 2012-10-31 14:53 |显示全部楼层
chinasjok 发表于 2012-10-31 14:18
操作系统权限?都是mysql 用户 且已经生成一遍了,为什么在执行就没有权限了?

mysql> set @file='t ...




    你语法错误了~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP