故事是这样的。公司的项目用的是禅道3.0,老到连按日期查寻需求都不能实现。资料所了一堆,但项目在用,就还是只能接着用。
说实现禅道的用的有点乱,需求当也没有分版本、计划、平台。
一通乱提就跟下单似的。
然后领导要看数据,禅道里查不到只能自己去查数据库。问题来了,还不能直接连到服务器上的mysql 只给了个3386。
我也不敢乱动,只能上去导出数据库,拿回本地再导入。
然后本用 Navicat Premium 连本机的mysql。(当然你也可以用任何你喜欢的工具)
这里题外话,一开始觉得没有MSSQL SERVER 那种可视创建 sql 语句的功能会很难用,结果玩了一下,发现出错的情况反而比当年用MSSQL的次数少。反正在就是用的满顺手的。有可能是代码美化功能不错,自动提示功能比较完善了。当然也有可能是当年是新手刚开始学SQL边学边用很多东西不懂。现在起码知道自己要做什么,不记得的东西顺手一搜马上就能搞定。好了YY完了。
当然直接用phpmysqladmin 也可以实现导出导入的,不过还是得点一堆东西不是。
写两处批处理用起来还是舒服些。
还有个问题要补充下,因为是上3386所以,导出了我还得拿到自己的电脑上才能用不是。原来 【远程桌面】有这个功能的。展开【选项】,切到【本地资源】(这里勾上剪切板可以方便复制),打开【详细信息】,在驱动器下选个盘共享就行了。
这样登到服务器上后,可以网络访问本地这个盘。
下面是具体内容了:
=====================================================================================
一 导出数据库
服务器的禅道放在c盘,所以
C:\xampp\mysql\bin\Export.bat
mysqldump -u root -p zentao > zentao.sql
pause
导出后把 zentao.sql 复制到共享的驱动器上。回到本机(本机我共享的是D盘),把 zentao.sql 复制到 mysql 的bin 下方便操作
然后先用Navicat Premium连上 mysql 先把现有 zentao 数据库删了。(我也不知道不删会出啥错,网上说导数据时都这样做的。在没搞清楚前,还是留着吧。要是以后知道没有鸟用,我再删。没删直接导我也看了,没看出啥不同)
<del>mysql drop database If Exists zentao;
create database If Not Exists zentao Character Set UTF8;</del>
二 导入数据库
接下来这里已经放好了批处理。直接运行就OK了。
1、先删掉已有的 zentao.sql
2、从D 盘拷到 D:\xampp\mysql\bin\
3、mysql 执行 sql 如果 数据库 zentao 在就删除。
4、创建数据库 zentao
5、导入服务器上拿来的 zentao.sql (中间设置utf8这段,不设置就会出编码相关的问题导致导入失败)
D:\xampp\mysql\bin\Import.bat
@echo off
set USER=root
set PW=123456
set DBName=zentao
@if not exist zentao.sql del zentao.sql
@copy /y D:\zentao.sql D:\xampp\mysql\bin\ > nul
echo ----------------- 开始导入 -----------------
mysql -u%USER% -p%PW% -e "drop database If Exists "%DBName%;
echo Drop database %DBName% success
mysql -u%USER% -p%PW% -e "create database If Not Exists "%DBName%" Character Set UTF8";
echo Create database %DBName% success
mysql -u%USER% -p%PW% --default-character-set=utf8 zentao < %DBName%.sql
echo 导入数据库 %DBName% 成功!
echo --------------------------------------------
pause
goto :eof
顺便说一下,改root密码的sql
mysql -u root -p
use mysql
update user set password=PASSWORD('123456') where host = 'localhost' and user = 'root';
flush privileges;
登陆mysql -p后是直接密码的不用加空格。因为初始是空的,所以这里-p后没东西。
选择数据库
改密码
刷新权限
三 查寻结果
最后运行下面的查寻。结果就出来(条件里的日期按自己需要的改下)
Navicat Premium 这一点上很好,创建的 Query 会存在我的文档里:
D:\用户目录\我的文档\Navicat\MySQL\servers\禅道\zentao\需求 by 创建日期.sql
就算是删除数据库也没关系,下次创建好后。它还在哪。
SELECT
id AS 编号,
pri 优先级,
(SELECT NAME FROM zt_module WHERE id = module ) AS 所属模块,
title 需求名称,
(SELECT spec FROM zt_storyspec WHERE story = id and version = (SELECT max(version) FROM zt_storyspec WHERE story = id)) as 需求描述,
STATUS 当前状态,
-- stage 所处阶段,
(SELECT realname FROM zt_user WHERE account = openedBy ) AS 由谁创建,
DATE(openedDate) 创建日期,
-- assignedTo 指派给,
DATE(assignedDate) 指派日期,
-- lastEditedBy 最后修改,
(SELECT realname FROM zt_user WHERE account = lastEditedBy ) AS 最后修改,
DATE(lastEditedDate) 最后修改日期,
-- closedBy 由谁关闭,
(SELECT realname FROM zt_user WHERE account = closedBy ) AS 由谁关闭,
DATE(closedDate) 关闭日期,
-- reviewedBy 由谁评审,
-- (SELECT realname FROM zt_user WHERE account = reviewedBy ) AS 由谁评审,
DATE(reviewedDate) 评审时间,
source 需求来源,
closedReason 关闭原因,
duplicateStory 重复需求
FROM
zt_story
WHERE
DATE(closedDate) >= '2016-01-30'
AND DATE(closedDate) <= '2016-02-02'
AND STATUS = 'closed'
AND stage = 'released'
导出的设置也可以保存的。