Rails 生成环境下如何导入数据?

匿名 · 2016年08月19日 · 最后由 Peter 回复于 2016年08月19日 · 1900 次阅读

在生活环境下无法执行 rails db:seed

不倾向于用 sql。

万能的 shell. 导出,压缩,上传,解压,导入。

...
declare -a arr=( "table1" "table2" )
...
for i in "${arr[@]}"
do
  ...
  mysqldump -uroot -ppassword database $i > $LOCALDIR/$i.sql
  tar czf $LOCALDIR/$i.sql.tar.gz -C $LOCALDIR $i.sql
  scp -r -P $PORT ${LOCALDIR%/}/$i.sql.tar.gz root@$SERVER:$SERVERDIR/$i.sql.tar.gz
  ssh -p $PORT root@$SERVER "tar xzf $SERVERDIR/$i.sql.tar.gz -C $SERVERDIR && rm $SERVERDIR/$i.sql.tar.gz"
  ssh -p $PORT root@$SERVER "mysql -u$DATABASE -p$PASSWORD ${DATABASE} < $SERVERDIR/$i.sql"
  ...
done
...

当然我的 script 不是这么写的,而是每一步一个循环,上面的代码只是参考

匿名 #2 2016年08月19日

@Peter 其实本质上还是 dump sql 咯。

能够按照业务逻辑写代码最好。不行的话,我这边就需要现在 dev 环境写 seeds,执行后 dump 到生成环境咯。

顺便问下 postgresql 怎么只导入数据,试过它的 dump 似乎导入很多不必要的数据,比如数据库角色什么的

下面的不行?

RAILS_ENV=production bundle exec rails db:seed

#2 楼 @u1370743666 场景不一样,我的是老数据,相当大,用 seed 太麻烦。

如果你只是小数据,还放源码一起的,可以试一下 #3 楼 @hz_qiuyuanxin 的命令。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号