testdata_generater_for_mysql 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,7 +1,8 @@
1
- # テスト用データジェネレータforMySQL
1
+ # テスト用データジェネレータ for MySQL
2
2
 
3
3
  まぁよく「テストデータ」ってのを作るんですが、、、毎回マルチプルインサートな簡易スクリプトを作っては捨てしてきた自分からの卒業を目論んだリポジトリです。
4
4
  ドキュメントはありませんが、サンプルでほぼやれることは解説していますのでそちらを参考にしてください。
5
5
 
6
6
  サンプル
7
- https://github.com/pacojp/testdata_generater_for_mysql/blob/master/example/sample1.rb
7
+ https://github.com/pacojp/testdata_generater_for_mysql/blob/master/example/sample1.rb
8
+
data/example/sample1.rb CHANGED
@@ -73,16 +73,16 @@ loops = [
73
73
  # シングルクォーテーションでの囲みがかからなくなります
74
74
  #
75
75
  procs = {
76
- :brand_id => Proc.new{|v|v[:brand_id]},
77
- :shop_id => Proc.new{|v|v[:shop_id]},
78
- :user_id => Proc.new{|v|v['user_id']},
79
- :name => Proc.new{|v|"#{v[:brand_id]}_#{v[:shop_id]}_#{v['user_id']}'s name"},
80
- :value1 => Proc.new{rand(10000)},
81
- :value_nil => Proc.new{nil},
82
- :value_func => Proc.new{"CONCAT('My', 'S', 'QL')".to_func}, #関数指定時はString#to_funcで
83
- :value_true => Proc.new{true}, # true は 1 false は 0
84
- :value_time => Proc.new{Time.mktime(2001,2,3,4,35,6)}, # Time,DateTime,Date
85
- :created_at => Proc.new{'NOW()'.to_func},
76
+ :brand_id => proc{|v|v[:brand_id]},
77
+ :shop_id => proc{|v|v[:shop_id]},
78
+ :user_id => proc{|v|v['user_id']},
79
+ :name => proc{|v|"#{v[:brand_id]}_#{v[:shop_id]}_#{v['user_id']}'s name"},
80
+ :value1 => proc{rand(10000)},
81
+ :value_nil => proc{nil},
82
+ :value_func => proc{"CONCAT('My', 'S', 'QL')".to_func}, #関数指定時はString#to_funcで
83
+ :value_true => proc{true}, # true は 1 false は 0
84
+ :value_time => proc{Time.mktime(2001,2,3,4,35,6)}, # Time,DateTime,Date
85
+ :created_at => proc{'NOW()'.to_func},
86
86
  }
87
87
  #
88
88
  # 実際にテストデータを作成します
@@ -94,7 +94,6 @@ create_rows(
94
94
  procs
95
95
  )
96
96
 
97
-
98
97
  # 以下作成結果のサンプルを出力しています
99
98
  puts '=' * 60
100
99
  puts query("SELECT count(id) AS cnt FROM tests").first['cnt'].to_s + "rows created"
@@ -1,7 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  require 'progressbar'
4
- require 'mysql2'
4
+ require 'mysql2wrapper'
5
+ require 'logger'
5
6
 
6
7
  #
7
8
  # TODO 以下の削除 サンプルの作成
@@ -34,27 +35,13 @@ require 'mysql2'
34
35
  # )
35
36
  #
36
37
 
37
- class String
38
- def to_func
39
- @__is_function = true
40
- self
41
- end
42
-
43
- def function?
44
- if @__is_function
45
- true
46
- else
47
- false
48
- end
49
- end
50
- end
51
-
52
38
  module TestdataGeneraterForMysql
53
39
 
54
40
  INSERT_PER_ROWS = 100
55
41
 
56
42
  def setup_mysql_client(hash)
57
- @__client = Mysql2::Client.new(hash)
43
+ @__client = Mysql2wrapper::Client.new(hash,nil)
44
+ #@__client = Mysql2wrapper::Client.new(hash)
58
45
  end
59
46
 
60
47
  def insert_per_rows(v)
@@ -134,47 +121,8 @@ module TestdataGeneraterForMysql
134
121
 
135
122
  def do_insert
136
123
  return if @__insert_values.size == 0
137
- @__inserted_rows += @__insert_values.size
138
- query = <<"EOS"
139
- INSERT INTO `#{@__client.escape(@__table_name)}`
140
- (#{@__col_procs.keys.map{|o|"`#{@__client.escape(o.to_s)}`"}.join(',')})
141
- VALUES
142
- #{
143
- @__insert_values.map do |row|
144
- "(#{
145
- row.map do |key,value|
146
- case value
147
- when nil
148
- "NULL"
149
- when TrueClass,FalseClass
150
- if value
151
- "'1'"
152
- else
153
- "'0'"
154
- end
155
- # TODO when datetime time
156
- when Time,DateTime
157
- "'#{value.strftime("%Y-%m-%d %H:%M:%S")}'"
158
- when Date
159
- "'#{value.strftime("%Y-%m-%d")}'"
160
- else
161
- s = value
162
- s = s.to_s unless s.kind_of?(String)
163
- if s.respond_to?(:function?) && s.function?
164
- "#{value.to_s}"
165
- else
166
- "'#{@__client.escape(value.to_s)}'"
167
- end
168
- end
169
- end.join(',')
170
- })"
171
- end.join(',')
172
- }
173
- EOS
174
- @__client.query(query)
175
- if @__pbar
176
- @__pbar.inc(@__insert_values.size)
177
- end
124
+ @__client.insert(@__client.escape(@__table_name),@__insert_values)
125
+ @__pbar.inc(@__insert_values.size) if @__pbar
178
126
  @__insert_values = []
179
127
  end
180
128
  end
@@ -1,3 +1,3 @@
1
1
  module TestdataGeneraterForMysql
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/test/test.rb CHANGED
@@ -148,6 +148,7 @@ CREATE TABLE tests (
148
148
  :value1 => Proc.new{rand(10000)},
149
149
  :value2 => Proc.new{rand(10000)},
150
150
  :value_nil => Proc.new{nil},
151
+ #:value_func => Proc.new{"CONCAT('My', 'S', 'QL')".to_func},
151
152
  :value_func => Proc.new{"CONCAT('My', 'S', 'QL')".to_func},
152
153
  :value_true => Proc.new{true},
153
154
  :value_false => Proc.new{false},
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.summary = %q{oreore mysql test data generater}
12
12
  s.description = %q{oreore mysql test data generater}
13
13
 
14
- s.add_dependency 'mysql2'
14
+ s.add_dependency 'mysql2wrapper','0.0.1' # https://github.com/pacojp/mysql2wrapper
15
15
  s.add_dependency 'progressbar'
16
16
 
17
17
  s.rubyforge_project = "testdata_generater_for_mysql"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testdata_generater_for_mysql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-07 00:00:00.000000000 Z
12
+ date: 2012-10-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: mysql2
15
+ name: mysql2wrapper
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.0.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 0.0.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: progressbar
32
32
  requirement: !ruby/object:Gem::Requirement