Skip to content

Commit a43791c

Browse files
committed
implemetented insert cli
1 parent 045bc3e commit a43791c

File tree

4 files changed

+77
-18
lines changed

4 files changed

+77
-18
lines changed

mysqlite/ReadMe.md

Whitespace-only changes.

mysqlite/my_sqlite_cli.rb

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,56 @@ def queryUserInput
2020
puts 'exiting sqlte cli'
2121
break
2222
when /^(\s*(SELECT|select)\s+([\w\s*,]+)\s+(FROM|from)\s+(\S+)\s*(?:(JOIN|join)\s+(\S+)\s+(on|ON)\s+(\S+))?(?:(WHERE|where)\s+(.*?))?\s*)$/
23-
2423
column_name=$3
2524
table_name="#{$5}.csv"
2625
where_conditions=$11
2726
table_name2="#{$7}.csv"
2827
join_on=$9
29-
30-
3128

3229
result=runSelectQuery(table_name,column_name).run
3330
if join_on
3431
result=runJoinQuery(join_on,table_name,table_name2,column_name).run
35-
3632
end
3733
if where_conditions
3834
result=runSelectWhereQuery(where_conditions,table_name,column_name).run
39-
end#where
35+
end
36+
37+
when /^(?:INSERT|insert)\s+(?:INTO|into)\s+(\w+)(?:\s+\(([^)]+)\))?\s+(?:VALUES|values)\s+\(([^)]+)\)\s*;?\s*$/
38+
39+
table_name="#{$1}.csv"
40+
table_column=$2
41+
table_data=$3
42+
hash_data_array=[]
43+
split_data = CSV.parse(table_data).first
44+
if table_column
45+
split_column=table_column.split(",")
46+
split_column.each_with_index do |column,i|
47+
data_hash={}
48+
data_hash[column] = split_data[i]
49+
hash_data_array<<data_hash
50+
end
51+
52+
end
53+
54+
# puts data_array.inspect
55+
# puts table_data_hashed.inspect
56+
# puts split_data.inspect
57+
# puts table_data_hashed.inspect
4058
4159
60+
request = MySqliteRequest.new
61+
request = request.insert(table_name)
62+
if table_column
63+
request = request.values(*hash_data_array)
64+
else
65+
request = request.values(*split_data)
66+
end
67+
request.run
68+
69+
#as a hash data is sent this way
70+
#'name' => 'Alaa Abdelnaby', 'year_start' => '1991', 'year_end' => '1995', 'position' => 'F-C', 'height' => '6-10', 'weight' => '240', 'birth_date' => "June 24, 1968", 'college' => 'Duke University'
4271
72+
4373
else
4474
puts 'Invalid query format. Please enter a valid query...e.g..SELECT * FROM database.csv'
4575
end#when
@@ -87,7 +117,8 @@ def runJoinQuery(join_conditions,table_name,table_name2,column_name)
87117
end
88118
MySQLite.new
89119
90-
# INSERT INTO students VALUES (John,'1991','1995','F-C','6-10','240',"June 24, 1968", 'Duke University')
120+
121+
# INSERT INTO nba_player_data (name,year_start,year_end,position,height,weight,birth_date,college) VALUES (Alaa Abdelnaby34,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University)
91122
92123
93124

mysqlite/my_sqlite_request.rb

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ def run
132132

133133

134134
when 'insert'
135+
135136
insert_row(@table_name,@dataToInsert)
136137

137138

@@ -235,17 +236,40 @@ def join_tables(tableB,tableA,tableB_file,tableB_column,tableA_column)
235236
end
236237
237238
def insert_row(table_name,dataToInsert)
239+
data_array=[]
240+
values_array=[]
241+
merged_hash={}
242+
insert_index=0
238243
CSV.open(table_name,"a+") do |csv|#test this in VsCode,it inserts data well without errors
239244
headers=csv.readline
240-
dataToInsert.each do |data|
241-
dataValues=headers.map do |header_name|
242-
data[header_name]
245+
dataToInsert.each do |data|
246+
if data.class == String
247+
values_array=dataToInsert
248+
csv<<values_array
249+
return
250+
end
251+
end
252+
253+
keys_array = dataToInsert.map(&:keys).flatten
254+
255+
dataToInsert.each do |data_hash|
256+
merged_hash.merge!(data_hash)
257+
end
258+
259+
headers.each_with_index do |header_name,i|
260+
my_hash={}
261+
my_hash[header_name]= merged_hash[header_name]
262+
data_array<<my_hash
243263
end
244-
csv<< dataValues
245-
end
246-
end
264+
265+
values_array=data_array.map do |data|
266+
data.values.first
267+
end
268+
269+
csv << values_array
247270
end
248271
272+
end
249273
def process_row(row,result_hash, selected_hash_array,columns)
250274
if columns[0]==='*'
251275
selected_hash_array<<row
@@ -304,11 +328,10 @@ def merge(left, right, &block)
304328
result
305329
end
306330
307-
308-
# request = MySqliteRequest.new
309-
# request = request.insert('nba_player_data.csv')
310-
# request = request.values('name' => 'Alaa Abdelnaby34', 'year_start' => '1991', 'year_end' => '1995', 'position' => 'F-C', 'height' => '6-10', 'weight' => '240', 'birth_date' => "June 24, 1968", 'college' => 'Duke University')
311-
# request.run
331+
request = MySqliteRequest.new
332+
request = request.insert('nba_player_data.csv')
333+
request = request.values('name' => 'Alaa Abdelnaby', 'year_start' => '1991', 'year_end' => '1995', 'position' => 'F-C', 'height' => '6-10', 'weight' => '240', 'birth_date' => "June 24, 1968", 'college' => 'Duke University')
334+
request.run
312335
313336
314337
# request = MySqliteRequest.new

mysqlite/nba_player_data.csv

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,9 @@ Jimmy agabaje2,1983,1983,C,7-1,240,"December 20, 1953",Kent State University
44
Bill Zopf,1971,1971,G,6-1,170,"June 7, 1948",Duquesne University
55
Matt Zunic,2017,2018,C,7-1,265,"March 18, 1997",agege
66
Matt Zunic,1949,1949,G-F,6-3,195,"December 19, 1919",George Washington University
7-
Alaa Abdelnaby34,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University
7+
1991,1995,F-C,6-10,240,"June 24, 1968",Duke University,
8+
'aisha',1991,1995,,6-10,240,"June 24, 1968",Duke University
9+
'aisha',1991,,,6-10,240,"June 24, 1968",Duke University
10+
'aisha',1991,1995,,6-10,240,"June 24, 1968",Duke University
11+
12+
Alaa Abdelnaby,1991,1995,F-C,6-10,240,"June 24, 1968",Duke University

0 commit comments

Comments
 (0)