将解析文本文件的数据插入mysql数据库
在这个问题中,我问如何将文件解析为文本文件。 我进一步使条件复杂化,并决定将数据写入mysql数据库。 原始数据是相同的 我有一个包含以下内容的文本文件:将解析文本文件的数据插入mysql数据库,mysql,ruby-on-rails,ruby,case-when,tiny-tds,Mysql,Ruby On Rails,Ruby,Case When,Tiny Tds,在这个问题中,我问如何将文件解析为文本文件。 我进一步使条件复杂化,并决定将数据写入mysql数据库。 原始数据是相同的 我有一个包含以下内容的文本文件: Head 1 Subhead 1 a 10 b 14 c 88 Subhead 2 a 15 b 16 c 17 d 88 Subhead 3 a 55 b 36 c 87 Head 4 Subhead 1 r 32 t 55 s 79 r 22 t 88 y 53 o 78 p 90 m 44 Head 53 Subtitle 1 y 22
Head 1
Subhead 1
a 10
b 14
c 88
Subhead 2
a 15
b 16
c 17
d 88
Subhead 3
a 55
b 36
c 87
Head 4
Subhead 1
r 32
t 55
s 79
r 22
t 88
y 53
o 78
p 90
m 44
Head 53
Subtitle 1
y 22
b 33
Subtitle 2
a 88
g 43
r 87
Head 33
Subhead 1
z 11
d 66
v 88
b 69
Head 32
Subhead 1
n 88
m 89
b 88
Subhead 2
b 88
m 43
现在我需要把这个文本结构到下一个平面。我想将这些数据写入mysql数据库。
我的行动:
require 'tiny_tds'
current_head = ""
current_sub = ""
res = []
@host = 'server'
@user = 'user'
@pass = 'pass'
lines.each do |line|
case line
when /Head \d+/
current_head = line
when /Subhead/
current_sub = line
when /\w{1} 88/
num = line
res << "#{current_head}, #{current_sub}, #{num}"
conn = TinyTds::Client.new(:host => @host, :username => @user, :password => @pass)
insert_string = "insert into table (head, sub, num) VALUES (#{res})"
conn.execute(insert_string)
end
end
事实上,我的版本可以工作,但我没有考虑数据库中的数据类型。如果有人知道如何使我的算法更快,那么告诉我是否可以在每个循环之外设置连接?
head | Sub | num |
_________________________
Head 1 | Subhead 1| c 88 |
Head 1 | Subhead 2| d 88 |
Head 4 | Subhead 1| t 88 |
Head 53| Subhead 2| a 88 |
Head 33| Subhead 1| v 88 |
Head 32| Subhead 1| n 88 |
Head 32| Subhead 1| b 88 |
Head 32| Subhead 2| b 88 |