In dieser Frage Multi-level parsing text Ich fragte, wie kann ich eine Datei in eine Textdatei analysieren. Ich komplizierte die Bedingungen weiter und entschied, die Daten in die MySQL-Datenbank zu schreiben. Die ursprünglichen Daten sind identisch.In mysql Datenbank Daten von Parsing Textdatei einfügen
hatte ich eine Textdatei mit dem folgenden enthalten:
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
Jetzt brauche ich diesen Text zur nächsten Ebene strukturieren. Ich möchte diese Daten in die MySQL-Datenbank schreiben. Meine Aktionen:
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
Als Ergebnis kann ich nur eine Zeile in die Datenbank einfügen. Außerdem ist der Einfügevorgang sehr langsam, wie kann ich den Prozess beschleunigen?
Ich brauche dieses Ergebnis in der Datenbank:
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 |
vielleicht Setup-Verbindung außerhalb der jeweiligen Schleife? – Fallenhero