0 votes
in SoSci Survey (dt.) by s148547 (195 points)

Hallo,

ich möchte gerne eine hochgeladene Datei als Quelle für die Inhalte der Datenbank nutzen (automatisiert).

Meine Idee ist es, dass eine Person zunächst eine .csv-Datei erstellt und diese dann mittels eines Fragebogens, in welchem die Frage "Datei hochladen" implementiert ist, hochlädt. Nach Abschluss des Fragebogens steht diese dann unter "Erhobene Daten" > "Hochgeladene Dateien" zur Verfügung.

Mithilfe eines PHP Codes (in dem selbigen? Fragebogen) würde ich dann gerne diese csv-Datei als "Datenbank für Inhalte" nutzen.

Mein Ziel ist es, dass die Datenbank für Inhalte von "Extern" mit einer csv-Datei erstellt/gefüttert werden kann. Ist das möglich?

Da ich weiß, dass sich die Datei um ca 500-1000 Einträge handeln wird, ist ein Einfügen zur Datenbank über "dbSet()" meiner Einschätzung nach eine sehr umständliche Lösung.

Vielen Dank für jegliche Gedanken dazu!

1 Answer

0 votes
by SoSci Survey (327k points)

Ein per PHP-Code automatisierter Import von CSV-Daten in die Datenbank für Inhalte ist bisher nicht vorgesehen. Aus meiner Sicht wäre das auch sehr riskant, weil nicht nur ausgeschlossen werden müsste, dass unberechtigte Dritte dadurch Daten hochladen - es müsste auch sichergestellt sein, dass die CSV-Datei stets das korrekte Format hat, damit die Datenbank nicht "zerschossen" wird.

Mein Ziel ist es, dass die Datenbank für Inhalte von "Extern" mit einer csv-Datei erstellt/gefüttert werden kann. Ist das möglich?

Denkbar (bisher noch nicht implementiert) wäre ein Daten- oder CSV-Import via API.

Ebenfalls denkbar wäre, dass über einen Link von SoSci Survey der Import-Dialog angeboten wird, sodass man die (Sicht-)Kontrolle über die korrekten Import-Parameter hat. Diese Lösung wäre aber ein Stück aufwändiger umzusetzen.

Auf Basis Ihrer Frage habe ich nur eine sehr vage Vorstellung, in welche Richtung Ihr Projekt gehen könnte. Vielleicht möchten Sie den Anwendungsfall mal etwas ausführlicher schildern?

by s148547 (195 points)
Vielen Dank für die Antwort! Das hilft mir schon sehr weiter, dass ich weiß, dass mein angedachter Lösungsweg so (noch) nicht funktioniert.

Gerne erläutere ich die Projektidee:
Wir möchten gerne an Unternehmen gehen und soziale Netzwerkdaten erheben.
Dazu möchten wir gerne den Fragentyp "Texteingabe mit Auswahlempfehlung" nutzen (Z.B. "Mit wem arbeiten Sie gerne zusammen?"  -- "Momo Muster - HR"). In der Datenbank sollen dann die Namen & Abteilungen der Personen stehen, die in der Frage als Auswahlempfehlung erscheinen. Wir würden gerne eine Lösung haben, in der nicht wir eine csv-Datei hochladen, sondern das Unternehmen selbst. Hier möchten wir gerne, dass eine Person zuvor eine Liste erstellt (mit den benötigten Infos, auf Grundlage eines Templates) und diese dann im csv-Format hochlädt, sodass diese Liste als Datenbank für Inhalte genutzt wird. Ungünstig wäre es für uns, wenn jede*r Mitarbeitende selbst, den eigenen Namen und Abteilung eintragen  müsste und wir es über die PHP-Funktion "dbSet()" der Datenbank hinzufügen oder wenn eine Person aus dem Unternehmen alle Namen manuell eingeben müsste (da es sich um 500-1000 Mitarbeitende handelt).

Für den Upload der csv-Datei ist es denkbar, dass wir einen Link zur Umfrage nur an die eine Person senden, und wir den Zugang zum Fragebogen mit einem Passwort schützen.
Pro Unternehmen wäre ein Befragungsprojekt angedacht, sodass wir den Zugang immer personalisieren könnten.

Ist diese Erläuterung hilfreich zur Findung einer Lösung?
Vielen Dank für die Hilfe!
by SoSci Survey (327k points)
Die Namen der Beschäftigten sollen vermutlich nur innerhalb der jeweiligen Einrichtung zu sehen sein, deshalb vermute ich, dass Sie für jedes Unternehmen ein neues/separates Projekt anlegen würden? Und dieses soll dann gewissermaßen mit den Namen/Zugehörigkeiten der Mitarbeiter:innen initialisiert werden, soweit korrekt?

Ich bin nicht sicher, ob es den Prozess wirklich deutlich effizienter macht, wenn der Upload der Namensliste durch den Kunden passiert und nicht durch Sie. Ich würde damit rechnen, dass (a) beim Erstellen der Tabelle und (b) beim Speichern als CSV viel schief gehen kann. Deshalb müsste das m.E. erstmal von Ihnen kontrolliert werden, bevor es ins Programm kommt. Auch sehe ich keine Vorteile beim Datenschutz, denn Einsicht in die Datenbank haben Sie ja ohnehin.

Technisch könnte ich mir schon eine Lösung vorstellen, bei welcher z.B. value() den Dateiinhalt eines Uploads liefert, aber aufgrund der o.g. Fallstricke würde ich das eher nicht weiter verfolgen. Wenn überhaupt würde ich so etwas direkt mit Excel-Dateien machen - damit können Menschen eher umgehen als mit CSV-Dateien. Aber auch die Excel-Verarbeitung steht für SoSci Survey bisher nur auf der Liste langfristiger Wünsche.
by s148547 (195 points)
Ja, genau. Wir gehen zu Unternehmen A, und dort sollen nur die Namen der Mitarbeitenden von Unternehmen A (mit den Abteilungen/Zugehörigkeiten, z.B. A.1, A.2, A.3 usw) sichtbar sein. Die Mitarbeitenden sollen dann eine Einladungsemail erhalten zu dem Fragebogen ("B").

Zuvor wollen wir diesen Fragebogen mit den Mitarbeitenden-Daten speisen. Ich verstehe die Fallstricke, und danke für Ihre Ideen hier. Jetzt überlege ich: wenn man eine Excel-Tabelle als Vorlage zum Download zur Verfügung stellt. Mit einer Anleitung und dann den Kunden diese Tabelle in ein csv-format abspeichern und dann in einem ersten/seperaten Fragebogen ("A") hochladen lässt (bevor die Befragung "B" beginnt). Wie sähe dann die Lösung via value() aus? Kann ich mit value() Zugriff auf die hochgeladene Datei aus Fraegbogen "A" erhalten oder nur auf die Eingaben in Fragen selbst, also dass man dann im Fragebogen "A" die Namen eintippen muss? (so verstehe ich es momentan).
by SoSci Survey (327k points)
>  wenn man eine Excel-Tabelle als Vorlage zum Download zur Verfügung stellt. Mit einer Anleitung und dann den Kunden diese Tabelle in ein csv-format abspeichern ...

Ich würde auch hier noch davon ausgehen, dass Excel (je nach Betriebssystem und Version) nicht immer verlässlich dasselbe CSV-Format (Trennzeichen, Texterkennungszeiten, Zeichenkodierung) verwendet.

> Kann ich mit value() Zugriff auf die hochgeladene Datei aus Fraegbogen "A" erhalten

Noch nicht, aber das wäre voraussicht eine Funktion, die wir mit vertretbarem Aufwand und zeitnah umsetzen könnten. Vielleicht auch als separate Funktion, damit man die CSV-Formatspezifika zum parsen festlegen kann. Diese Funktion würde dann voraussichtlich ein Array mit den tabellarischen Daten liefern, die man dann via dbSet() in die Datenbank schreiben könnte. Das ist nicht besonders effizient, sollte aber bei 1000 Datensätzen auch keine spürbare Verzögerung verursachen. Außerdem könnte man das Array zwischendurch per PHP-Filter daraufhin prüfen, ob z.B. die Anzahl der Spalten stimmt.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...