Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenimport von zB .xls zu mysql (https://www.delphipraxis.net/98874-datenimport-von-zb-xls-zu-mysql.html)

freddiiii 3. Sep 2007 13:54

Datenbank: MYSQL/MSSQL • Zugriff über: ADO

Datenimport von zB .xls zu mysql
 
Hallo erstmal!
Ich würde (vorerst) gerne die Daten aus einer .xls Datei in eine MySQL-DB importieren.
Der Transfer von Excel zu MS-SQL geht ganz einfach automatisch über folgende zeile:

SQL-Code:
SELECT * INTO Tabelle FROM OPENROWSET('MSDASQL', 'Driver=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb); DBQ=C:\text.xls, 'Select * from [$Tabelle]')
Nun ist meine Frage ob es ähnlich einfache Umsetzungsmöglichkeiten auch für MySQL gibt oder ob ich wirklich diesen riesigen Umweg machen muss(Tabellen der xls auslesen, typen überprüfen, eine entsprechende Clontabelle auf der MySQL-DB anlegen, die xls in ne Textdatei und dann mit load infile)?

Bin über jede Antwort diesbezüglich glücklich ;)

fred

mkinzler 3. Sep 2007 13:55

Re: Datenimport von zB .xls zu mysql
 
So wird es nur mit Excel/MSSQL gehen.

freddiiii 4. Sep 2007 13:15

Re: Datenimport von zB .xls zu mysql
 
also nur ueber diesen enormen umweg? ;/

mkinzler 4. Sep 2007 13:30

Re: Datenimport von zB .xls zu mysql
 
Du kannst natürlich auch selber ein tool schreiben, bzw. ein Admintool für MySQL verwenden, welches das kann.

Matt 4. Sep 2007 17:45

Re: Datenimport von zB .xls zu mysql
 
Hallo Fred,

ich hab das so gelöst, das ich mir die Daten aus der XLS in ein Dataset lade, das in einem Gríd anzeige und das anschließend durchlaufe und Zeile für Zeile in ein Memo schreibe.

Delphi-Quellcode:
 
col := ds_im.DataSet.FieldCount;

cs:='CREATE TABLE 'Tabelle1'(`ID` int(11) NOT NULL auto_increment,';

for z := 0 to col-1 do begin
  cs := cs + '`' + ds_im.DataSet.Fields[z].FieldName + '` varchar(255),';
  next;
end;

  cs := cs + ' PRIMARY KEY (`ID`)) TYPE=MyISAM;';

  textablage.Lines.Add(cs);
  textablage.Lines.Add('');

  ds_im.DataSet.First;
  ad := ds_im.DataSet.RecordCount;
 
  //pb = statusbar
  pb.Visible := true;
  pb.Max := ad;
  pb.Position := 0;

while not ds_im.DataSet.Eof do begin
  pb.StepBy(1);
  cs:= 'Insert into 'Tabelle1' Values(' + quotedstr(inttostr(pb.position)) + ',';
  for z := 0 to col-1 do begin
  cs := cs + quotedstr(ds_im.DataSet.Fields[z].AsString) + ',';
  next;
end;

cs:= leftstr(cs,strlen(pchar(cs))-1) + ');';

memo.Lines.Add(cs);
ds_im.DataSet.next;
Wenn fertig verbinde dich mit dem MySQL Server führe den Script aus (aus memo).

Gruß Matt


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz