Guest User

Untitled

a guest
Jul 8th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. require 'yaml'
  2. require 'rake'
  3. require 'rbconfig'
  4. require 'fileutils'
  5.  
  6. LIMIT_FILESIZE = 1000000000
  7.  
  8. def os
  9. @os ||= (
  10. host_os = RbConfig::CONFIG['host_os']
  11. case host_os
  12. when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
  13. :windows
  14. when /darwin|mac os/
  15. :macosx
  16. when /linux/
  17. :linux
  18. when /solaris|bsd/
  19. :unix
  20. else
  21. raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
  22. end
  23. )
  24. end
  25.  
  26. def file_count(file_size)
  27. return 1 if file_size < LIMIT_FILESIZE
  28.  
  29. 4.step(Float::INFINITY, 4) do |i|
  30. next if (file_size / i) > LIMIT_FILESIZE
  31. return i
  32. end
  33. end
  34.  
  35. TABLES = %w[table_names].freeze
  36.  
  37. config = YAML.load_file('config/database.yml')['production']
  38. conf_file = File.dirname(__FILE__) + '/tmp/my.conf'
  39. outputs_dir = File.dirname(__FILE__) + '/txts/outputs'
  40. splits_dir = File.dirname(__FILE__) + '/txts/splits'
  41. FileUtils.rm(Dir.glob(outputs_dir + '/*'))
  42. FileUtils.rm(Dir.glob(splits_dir + '/*'))
  43.  
  44. File.open(conf_file, 'w') do |f|
  45. f.puts "[client]"
  46. f.puts "user=#{config['username']}"
  47. f.puts "password=#{config['password']}"
  48. end
  49.  
  50. TABLES.each do |table|
  51. sh "mysql --defaults-file=tmp/my.conf -h\"#{config['host']}\" -D \"#{config['database']}\" -e \"select * from #{table}\" -s -N > txts/outputs/#{table}.txt", verbose: false
  52.  
  53. file_size = File.size("txts/outputs/#{table}.txt")
  54. rows = `wc -l txts/outputs/#{table}.txt`.match(/\s*(\d*)/)[1].to_i
  55.  
  56. @file_count = file_count(file_size)
  57.  
  58. if os == :macosx
  59. # MAC OSでは、`-d`オプションが利用できない。使いたい場合は、brew install coreutils
  60. sh "gsplit -d -l #{(rows / @file_count) + 4} txts/outputs/#{table}.txt txts/splits/#{table}.txt. &>/dev/null", verbose: false
  61. else
  62. sh "split -d -l #{(rows / @file_count) + 4} txts/outputs/#{table}.txt txts/splits/#{table}.txt. &>/dev/null", verbose: false
  63. end
  64. end
  65. FileUtils.rm(conf_file)
Add Comment
Please, Sign In to add comment