Ergebnis 1 bis 11 von 11

Thema: Mitglieder Liste aus Excel importieren

  1. #1
    Contao-Nutzer
    Registriert seit
    07.01.2013.
    Beiträge
    7

    Standard Mitglieder Liste aus Excel importieren

    Hallo liebe Contao Community,
    ich bin jetzt seit Stunden mit einem Problem beschäftigt - die Aufgabe:

    Ich habe eine Contao Seite (3.5.18) und möchte ca. 2700 "Mitglieder" anlegen. Die Mitglieder bestehen aus E-mailadresse, Benutzername und Passwort (Passwort bei allen Mitgliedern das gleiche).

    Das Problem:
    keine der bisherigen Methode funktioniert wirklich...

    >Contao scheint keine Funktion im Backend anzubieten um eine Liste im Mitgliederbereich zu importieren.
    >phpMyAdmin kann zwar über einen Umweg über LibreOffice schon Daten importieren aber es kommen immer wieder Fehlermeldungen beim Import der Datei in phpMyAdmin. Diese Anleitung sah zwar vielversprechend aus führte aber nicht zum Ziel: https://community.contao.org/de/show...tgliederimport

    > in jedem Fall müsste ja auch das Passwort mit eingefügt werden (bzw. Kann man das verschlüsselte PW auf alle neuen User kopieren)?

    Hat jemand eine Idee oder einen Lösungsvorschlag?


    Viele Grüße

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Die Lösungsmöglichkeiten hängen von Deinen Möglichkeiten ab. Wenn Du programmieren kannst, könntest Du Dir ein Script schreiben, das die Daten (Deine 2700 Records) durchgeht und für jeden einen SQL-Befehl erzeugt, der die Daten in die Datenbank einfügt. So in etwa

    Code:
    INSERT INTO `tl_member (`username`,`email`,`password`) VALUES ('benutzername', 'foo@example.com', 'passworthash');
    Das könntest Du wahrscheinlich zur Not auch in Excel machen (Excel-Funktion VERKETTEN()).

    Den Passworthash könntest Du wahrscheinlich am einfachsten erzeugen, indem Du anuell einen User anlegst und dann schaust, was in der Datenbank steht. Diesen Wert übernimmst Du.

    Neben den oben angegebenen Feldern `username`,`email`,`password` wirst Du wahrscheinlich auch noch `login` = '1' (Login erlauben) und weitere benötigen.

    Ich würde das einfach in einer lokalen Installation ausprobieren, wo ich jederzeit alles wieder zurücksetzen kann.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Für den Zwischenschritt von *.xls zu *.sql würde ich an Deiner Stelle mal GoogleRefine bzw OpenRefine probieren.

    Damit kannst Du sehr einfach die Daten auch entsprechend manipulieren (zB Passwort) und danach in einem korrekten Format *.sql oder *.sql.tar.gz oder oder oder exportieren.

  4. #4
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    830

    Standard

    Excel kann kein UFT8.
    Verwende ein CSV aus Open Office, codiert als UFT8, und es Funktioniert.
    Apropos, ich meine die Backendfunkton.

  5. #5
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    775
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von randycastillo Beitrag anzeigen
    ch habe eine Contao Seite (3.5.18) und möchte ca. 2700 "Mitglieder" anlegen. Die Mitglieder bestehen aus E-mailadresse, Benutzername und Passwort (Passwort bei allen Mitgliedern das gleiche).
    Als ich mal vor einem recht ähnlichen Problem stand, stieß ich
    a) auf die Erweiterung import-from-csv-bundle -> https://packagist.org/packages/marko...rom-csv-bundle
    Damit lassen sich große Mengen an Daten in die DB reinknallen.
    b) und habe mir ein kleines Skript geschrieben, welches mir die gewünschte Anzahl der Mitglieder anlegt, durchnummeriert, mit der Möglichkeit eines Prefixes, inkl. Passwörtern, Dummy Mail-Adressen (sonst nörgelt Contao, da mandatory) und der Möglichkeit, diese Liste als CSV zu exportieren, in Contao zu importieren und dann dem Kunden zu schicken.

    Ist bestimmt nicht der Weisheit letzter Schluss und über die Qualität des Codes möchte ich auch nicht diskutierem, aber es funktioniert
    Vielleicht hilft es Dir ja weiter.
    Hier das Skript: https://github.com/Stefko/User-Gener...ster/eugen.php
    Grüße, Stefko

  6. #6
    Contao-Nutzer
    Registriert seit
    07.01.2013.
    Beiträge
    7

    Standard

    Hey, danke für die vielen Tipps! Super Community!

    Einige Fragezeichen habe ich allerdings doch noch (Kann auch damit zusammen hängen, dass ich nicht wirklich der "Obercoder" bin:

    @dtptiger
    >>open office: check!
    >"Apropos, ich meine die Backendfunktion."

    Wie sollte ich denn deiner Meinung nach diese CSV Datei im Backend hochladen bzw. in die Mitgliederliste bekommen? Meinst du in phpMyAdmin? Oder in Contao?



    @fiedsch
    ..."Script schreiben, das die Daten (Deine 2700 Records) durchgeht und für jeden einen SQL-Befehl erzeugt, der die Daten in die Datenbank einfügt."
    ..."Code: INSERT INTO `tl_member (`username`,`email`,`password`) VALUES ('benutzername', 'foo@example.com', 'passworthash');"

    >Wo bzw. mit welchem Programm kann ich das Script schreiben bzw. anwenden? Bin absolut kein Coder aber das sollte machbar sein.

    >>in Excel machen: wenns mit der o.g. Möglichkeit eleganter ist brauche ich kein Excel...
    >>Passworthash: check!
    >>`login` = '1' : check!
    >>lokale Installation: ich habe ein DB Backup gemacht...



    @PaddySD
    "Für den Zwischenschritt von *.xls zu *.sql würde ich an Deiner Stelle mal GoogleRefine bzw OpenRefine probieren."

    "Damit kannst Du sehr einfach die Daten auch entsprechend manipulieren (zB Passwort) und danach in einem korrekten Format *.sql oder *.sql.tar.gz oder oder oder exportieren."

    >>Meinst du damit, dass ich die "tl_member" als sql aus phpMyAdmin exportieren soll und in OpenRefine mit den neuen Datensätzen (die 2700 User) einfügen soll und dann als sql wieder in die Datenbank hochladen soll? Oder habe ich da was falsch verstanden?


    @Stefko
    zu a): das hört sich super an. Jedoch taucht diese extension nicht im Erweiterungskatalog von Contao auf.
    zu b) Wie bzw. wo kann ich dieses Script einfügen bzw. anwenden um die User anzulegen?



    @ ALL

    bin ich nun ganz falsch gewickelt, wenn ich einfach die "tl_member" als CSV aus phpMyAdmin exportiere und durch die entsprechenden Datensätze ergänze und dann wieder als CSV in phpMyAdmin importiere?
    Warum ich bisher die Fehlermeldungen bekommen habe ist mit schleierhaft. Bei einem Importversuch wurde ein user korrekt importiert und die restlich 9 Testufer nicht...Fragen über Fragen


    Vielen Dank an Alle die sich die Zeit nehmen um Contao benutzerfreundlicher zu machen!

  7. #7
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    775
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von randycastillo Beitrag anzeigen
    @Stefko
    zu a): das hört sich super an. Jedoch taucht diese extension nicht im Erweiterungskatalog von Contao auf.
    Ich hatte sie (seinerzeit noch unter 3.5.x) mit dem Composer installiert, mittlerweile läuft die Seite (und die Erweiterung) problemlos unter 4.4
    Wie/ob das Ding mit der alten ER2 zu installieren ist, kann ich leider nicht sagen, da ich das schon seit vielen Jahren nicht mehr nutze.

    zu b) Wie bzw. wo kann ich dieses Script einfügen bzw. anwenden um die User anzulegen?
    Das Skript ist unabhängig von Contao. Bei mir läuft es zB lokal auf meinem Rechner. Du kannst es aber auch in das Contao Root-Verzeichnis packen und dann entsprechend aufrufen.


    @ ALL
    bin ich nun ganz falsch gewickelt, wenn ich einfach die "tl_member" als CSV aus phpMyAdmin exportiere und durch die entsprechenden Datensätze ergänze und dann wieder als CSV in phpMyAdmin importiere?
    Nö passt. Im Prinzip ist dann der händische Weg von dem was ich per Skript und Erweiterung mache.
    Vergiss aber das DB-Backup zuvor nicht ...

    Warum ich bisher die Fehlermeldungen bekommen habe ist mit schleierhaft. Bei einem Importversuch wurde ein user korrekt importiert und die restlich 9 Testufer nicht...Fragen über Fragen
    Ins Blinde geraten könnte es sein, dass die Zeilenenden Deines CSVs nicht passten, also zB kein ; vorhanden war. Oder auch, dass etwas mit den Zeilenumbrüchen nicht stimmt (Unix vs. Windows). Gerade weil er den ersten noch nimmt und den Rest nicht lässt mich in diese Richtung vermuten.
    Geändert von Stefko (13.02.2019 um 10:44 Uhr)
    Grüße, Stefko

  8. #8
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Warum ich bisher die Fehlermeldungen bekommen habe ist mit schleierhaft. Bei einem Importversuch wurde ein user korrekt importiert und die restlich 9 Testufer nicht...Fragen über
    Was waren denn "die Fehlermeldungen"? Und wie hat die Datei (die Daten) für den Import ausgesehen?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  9. #9
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Zitat Zitat von randycastillo Beitrag anzeigen
    [...]
    @PaddySD
    "Für den Zwischenschritt von *.xls zu *.sql würde ich an Deiner Stelle mal GoogleRefine bzw OpenRefine probieren."

    "Damit kannst Du sehr einfach die Daten auch entsprechend manipulieren (zB Passwort) und danach in einem korrekten Format *.sql oder *.sql.tar.gz oder oder oder exportieren."

    >>Meinst du damit, dass ich die "tl_member" als sql aus phpMyAdmin exportieren soll und in OpenRefine mit den neuen Datensätzen (die 2700 User) einfügen soll und dann als sql wieder in die Datenbank hochladen soll? Oder habe ich da was falsch verstanden?
    [...]
    Du hast 2700 Mitgliederdatensätze die in Contao sollen. Wenn Du noch weitere schon in Contao hast (also in tl_member), dann umso besser.

    OpenRefine bietet sich immer dann an, wenn Du eine Anzahl Datensätze manipulieren bzw editieren möchtest. Der Witz besteht ja darin, dass Du eben alle Arten von Änderungen und Anpassungen erledigen kannst, und dann eine gute Exportfunktion hast...

    Kurz gesagt: Ja, genau! Schau es Dir mal an.

    PS: Ich habe damit zuletzt eine Adressdatenbank von MSaccess zu Contao migriert. Alles Handarbeit mit OpenRefine, denn solche Dinge wie Angleichung kriegst Du mit sql nur kompliziert hin (sechs unterschiedliche Schreibweisen bei einem Strassennamen...)

  10. #10
    Contao-Nutzer
    Registriert seit
    07.01.2013.
    Beiträge
    7

    Standard

    Hallo zusammen,

    nach einiger Zeit und ein paar Unwegsamkeiten habe ich das Problem/die Aufgabe lösen können.

    Hier der Weg, der für mich am einfachsten erschien:

    >Installation der Extension "import_from_csv"in der Version 1.0.2
    >CSV in "Open Office" erstellen mit allen relevanten Feldern der Datenbankstruktur
    >Einfüllen der Daten (2700 User mit jeweils gleichem Passwort in Klartext und Setzen von login=1, groups=1 (hatte nur eine Gruppe)
    >Hochladen des CSV in einen Ordner der Conto Seite
    >Aufrufen der Extension -> Auswählen von tl_member -> Anhaken der gewünschten Einträge -> " und ; auswählen -> Datei in Dateiverwaltung auswählen -> START drücken - fertig.

    >>Probleme: die Extension kann nur ca 500 Einträge auf einmal bearbeiten (einfach mehrere CSV Dateien erstellen und Vorgang wiederholen)

    >>Weiteres Problem (nicht relevant für Import): Im Anschluss musste noch der Username "nicht case sensitiv" gemacht werden -> Meine Lösung: in phpMyAdmin einfach in tl_member die Spalte "username" auswählen und von utf8 in utf8_general_ci abändern. Hat bei mir funktioniert (Sicherheitsfeature ist dadurch etwas eingeschränkt)


    VIELEN DANK nochmal an ALLE die sich die Zeit genommen haben um mein Unwissen etwas zu verkleinern

  11. #11
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Zitat Zitat von randycastillo Beitrag anzeigen
    Im Anschluss musste noch der Username "nicht case sensitiv" gemacht werden -> Meine Lösung: in phpMyAdmin einfach in tl_member die Spalte "username" auswählen und von utf8 in utf8_general_ci abändern. Hat bei mir funktioniert (Sicherheitsfeature ist dadurch etwas eingeschränkt)
    Das könntest Du auch auf dem Contao-Weg lösen. Dazu müsstest Du die DCA-Definition des Felds in tl_member ändern:


    Original aus tl_member.php
    PHP-Code:
    'username' => array
                    (
                            
    'label'                   => &$GLOBALS['TL_LANG']['tl_member']['username'],
                            
    'exclude'                 => true,
                            
    'search'                  => true,
                            
    'sorting'                 => true,
                            
    'flag'                    => 1,
                            
    'inputType'               => 'text',
                            
    'eval'                    => array('mandatory'=>true'unique'=>true'rgxp'=>'extnd''nospace'=>true'maxlength'=>64'feEditable'=>true'feViewable'=>true'feGroup'=>'login''tl_class'=>'w50'),
                            
    'save_callback' => array
                            (
                                    array(
    'tl_member''resetAutologin')
                            ),
                            
    'sql'                     => "varchar(64) COLLATE utf8_bin NULL"
                    
    ), 

    d.h. Du würdest dann

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_member']['fields']['username']['sql'] = "varchar(64) NULL" 
    verwenden, damit die Strandard-Collation gilt (die wahrscheinlich ..._ci ist) greift.

    Diesen Eintrag dann in der (wahrscheinlich neu anzulegenden) Datei app/Resources/contao/dca/tl_member.php machen.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •