Code: Alles auswählen
procedure TForm1.Button2Click(Sender: TObject);
var
i: qword;
Origin: string;
sl: TStringList;
begin
ZQuery1.Close();
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('CREATE TABLE IF NOT EXISTS dict ( id SERIAL PRIMARY KEY , word varchar(512) NOT NULL);');
ZQuery1.SQL.Add('CREATE TABLE IF NOT EXISTS stats ( w1 INTEGER NOT NULL REFERENCES dict(id), w2 INTEGER NOT NULL REFERENCES dict(id), fw INTEGER NOT NULL REFERENCES dict(id), az INTEGER NOT NULL, PRIMARY KEY (w1, w2, fw));');
ZQuery1.SQL.Add('CREATE UNIQUE INDEX ON dict(word);');
ZQuery1.Open;
ZQuery1.ExecSQL;
Origin := Loadfile('./testfile');
Origin := Stringreplace(Origin, '''', '''' + '''', [rfReplaceAll]);
sl := TStringList.Create;
sl.Delimiter := ' ';
sl.QuoteChar := #$0;
sl.DelimitedText := Origin;
for i := 0 to sl.Count - 1 do
begin
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('INSERT INTO dict (word) VALUES (''' + sl[i] + ''') ON CONFLICT DO NOTHING;');
ZQuery1.ExecSQL;
// Das sollte Batch insert werden
// if i mod 1000 = 0 then
// begin
// ZConnection1.Commit;
// end;
Form1.Caption := IntToStr(i);
end;
sl.free;
end;