MySQL Adressbuch in Outlook importieren (Probleme mit Zeilenumbruch in .CSV)
Hallo zusammen,
mein Problem scheind eigentlich ganz simpel zu sein, doch irgenwie auch wieder nicht.
Folgendes:
Ich habe mir ein Adressbuch in einer MySQL Tabelle erstellt. Dieses möchte ich jetzt gerne nach Outlook 2003 importieren. - Soweit die Theorie...
In Outlook gibt es die Möglichkeit Adressbücher aus .CSV Dateien zu importeieren. (Windows CSV "," getrennt)
Im Header (1. Zeile) befinden sich die Datenfeldnamen - bei Outlook 90 Stück im Stil von: "Anrede","Vorname", ....
Danach folgen pro Zeile ein Adressbucheintrag.
Alles kein Problem. Jetzt gibt es bestimmt mehrere Möglichkeiten um ans Ziel zu kommen.
Nach ein bisschen Googlen habe ich dann SELECT * INTO OUTFILE gefunden und dies erstmal in PHPMyAdmin ausprobiert.
Tolle Sache, leider stimmen die Datenfelder meines Adressbuches nicht mit Outlook überein.
Daher habe ich mir jetzt etwas kleines geschrieben:
So, das ganze funktioniert soweit ganz gut. Allerdings habe ich in der .csv keine Zeilenumbrüche!!!
Ich habe gegoogled bis ich schwarz war. Alles was ich gefunden habe ist: Hänge ein "/n" oder ein "/r/n" an den String....
Wie Ihr seht habe ich das getan. Wenn ich die Datei in Notepad öffne habe ich eine einzige lange Zeile die Notepad von sich aus irgendwann umbricht.
Öffne ich sie in meinem favorisierten Editor (EvolvED) habe ich nur eine ellen lange Zeile.
Kann mir da wer weiterhelfen? Ich kapier das einfach nicht ....
Übrigens, kann ich statt die Datei nur zu erstellen diese nicht auch "nicht" schreiben und den String direkt zum download anbieten? Über "header content-type"???
Bin für jeden Rat dankbar....
MfG Sam
mein Problem scheind eigentlich ganz simpel zu sein, doch irgenwie auch wieder nicht.
Folgendes:
Ich habe mir ein Adressbuch in einer MySQL Tabelle erstellt. Dieses möchte ich jetzt gerne nach Outlook 2003 importieren. - Soweit die Theorie...
In Outlook gibt es die Möglichkeit Adressbücher aus .CSV Dateien zu importeieren. (Windows CSV "," getrennt)
Im Header (1. Zeile) befinden sich die Datenfeldnamen - bei Outlook 90 Stück im Stil von: "Anrede","Vorname", ....
Danach folgen pro Zeile ein Adressbucheintrag.
Alles kein Problem. Jetzt gibt es bestimmt mehrere Möglichkeiten um ans Ziel zu kommen.
Nach ein bisschen Googlen habe ich dann SELECT * INTO OUTFILE gefunden und dies erstmal in PHPMyAdmin ausprobiert.
Tolle Sache, leider stimmen die Datenfelder meines Adressbuches nicht mit Outlook überein.
Daher habe ich mir jetzt etwas kleines geschrieben:
// Das sind die Datenheader von Outlook!
// "Anrede","Vorname","Weitere Vornamen","Nachname","Suffix","Firma","Abteilung","Position","Straße geschäftlich","Straße geschäftlich 2","Straße geschäftlich 3",
// "Ort geschäftlich","Region geschäftlich","Postleitzahl geschäftlich","Land geschäftlich","Straße privat","Straße privat 2","Straße privat 3","Ort privat",
// "Region privat","Postleitzahl privat","Land privat","Weitere Straße","Weitere Straße 2","Weitere Straße 3","Weiterer Ort","Weitere Region","Weitere Postleitzahl",
// "Weiteres Land","Telefon Assistent","Fax geschäftlich","Telefon geschäftlich","Telefon geschäftlich 2","Rückmeldung","Autotelefon","Telefon Firma","Fax privat",
// "Telefon privat","Telefon privat 2","ISDN","Mobiltelefon","Weiteres Fax","Weiteres Telefon","Pager","Haupttelefon","Mobiltelefon 2","Telefon für Hörbehinderte",
// "Telex","Abrechnungsinformation","Benutzer 1","Benutzer 2","Benutzer 3","Benutzer 4","Beruf","Büro","E-Mail-Adresse","E-Mail-Typ","E-Mail: Angezeigter Name",
// "E-Mail 2: Adresse","E-Mail 2: Typ","E-Mail 2: Angezeigter Name","E-Mail 3: Adresse","E-Mail 3: Typ","E-Mail 3: Angezeigter Name","Empfohlen von","Geburtstag",
// "Geschlecht","Hobby","Initialen","Internet-Frei/Gebucht","Jahrestag","Kategorien","Kinder","Konto","Name Assistent","Name des/der Vorgesetzten","Notizen",
// "Organisations-Nr.","Ort","Partner","Postfach geschäftlich","Postfach privat","Priorität","Privat","Regierungs-Nr.","Reisekilometer","Sprache","Stichwörter",
// "Vertraulichkeit","Verzeichnisserver","Webseite","Weiteres Postfach"
// Hier werden diese als erste Zeile in die Variable $NDS geschrieben
$NDS = '"Anrede","Vorname","Weitere Vornamen","Nachname","Suffix","Firma","Abteilung","Position","Straße geschäftlich","Straße geschäftlich 2","Straße geschäftlich 3","Ort geschäftlich","Region geschäftlich","Postleitzahl geschäftlich","Land geschäftlich","Straße privat","Straße privat 2","Straße privat 3","Ort privat","Region privat","Postleitzahl privat","Land privat","Weitere Straße","Weitere Straße 2","Weitere Straße 3","Weiterer Ort","Weitere Region","Weitere Postleitzahl","Weiteres Land","Telefon Assistent","Fax geschäftlich","Telefon geschäftlich","Telefon geschäftlich 2","Rückmeldung","Autotelefon","Telefon Firma","Fax privat","Telefon privat","Telefon privat 2","ISDN","Mobiltelefon","Weiteres Fax","Weiteres Telefon","Pager","Haupttelefon","Mobiltelefon 2","Telefon für Hörbehinderte","Telex","Abrechnungsinformation","Benutzer 1","Benutzer 2","Benutzer 3","Benutzer 4","Beruf","Büro","E-Mail-Adresse","E-Mail-Typ","E-Mail: Angezeigter Name","E-Mail 2: Adresse","E-Mail 2: Typ","E-Mail 2: Angezeigter Name","E-Mail 3: Adresse","E-Mail 3: Typ","E-Mail 3: Angezeigter Name","Empfohlen von","Geburtstag","Geschlecht","Hobby","Initialen","Internet-Frei/Gebucht","Jahrestag","Kategorien","Kinder","Konto","Name Assistent","Name des/der Vorgesetzten","Notizen","Organisations-Nr.","Ort","Partner","Postfach geschäftlich","Postfach privat","Priorität","Privat","Regierungs-Nr.","Reisekilometer","Sprache","Stichwörter","Vertraulichkeit","Verzeichnisserver","Webseite","Weiteres Postfach"';
$NDS .= '/n';
mysql_connect($dbsvr, $dbuser, $dbpass);
mysql_select_db($dbname);
$RS = mysql_query("SELECT * FROM adressbook ORDER BY status, name");
// In dieser Schleife werden die Datenfelder aus meinem Adressbuch in Outlook Datenfelder geschrieben / pro Datensatz
while ($DS = mysql_fetch_assoc($RS))
{
$NDS .= '"",'; //Anrede
$NDS .= '"' . $DS["vorname"] . '",'; //Vorname
$NDS .= '"",'; //Weitere Vornamen
$NDS .= '"' . $DS["name"] . '",'; //Nachname
$NDS .= '"",'; //Suffix Firma
$NDS .= '"",'; //Abteilung
$NDS .= '"",'; //Position
$NDS .= '"' . $DS["strasse2"] . '",'; //Straße geschäftlich
$NDS .= '"",'; //Straße geschäftlich 2
$NDS .= '"",'; //Straße geschäftlich 3
$NDS .= '"' . $DS["ort2"] . '",'; //Ort geschäftlich
$NDS .= '"",'; //Region geschäftlich
$NDS .= '"' . $DS["plz2"] . '",'; //Postleitzahl geschäftlich
$NDS .= '"",'; //Land geschäftlich
$NDS .= '"' . $DS["strasse"] . '",'; //Straße privat
$NDS .= '"",'; //Straße privat 2
$NDS .= '"",'; //Straße privat 3
$NDS .= '"' . $DS["ort"] . '",'; //Ort privat
$NDS .= '"",'; //Region privat
$NDS .= '"' . $DS["plz"] . '",'; //Postleitzahl privat
$NDS .= '"",'; //Land privat
$NDS .= '"",'; //Weitere Straße
$NDS .= '"",'; //Weitere Straße 2
$NDS .= '"",'; //Weitere Straße 3
$NDS .= '"",'; //Weiterer Ort
$NDS .= '"",'; //Weitere Region
$NDS .= '"",'; //Weitere Postleitzahl
$NDS .= '"",'; //Weiteres Land
$NDS .= '"",'; //Telefon Assistent
$NDS .= '"' . $DS["fax2"] . '",'; //Fax geschäftlich
$NDS .= '"' . $DS["tel3"] . '",'; //Telefon geschäftlich
$NDS .= '"' . $DS["tel4"] . '",'; //Telefon geschäftlich 2
$NDS .= '"",'; //Rückmeldung
$NDS .= '"",'; //Autotelefon
$NDS .= '"",'; //Telefon Firma
$NDS .= '"' . $DS["fax"] . '",'; //Fax privat
$NDS .= '"' . $DS["tel"] . '",'; //Telefon privat
$NDS .= '"",'; //Telefon privat 2
$NDS .= '"",'; //ISDN
$NDS .= '"' . $DS["tel2"] . '",'; //Mobiltelefon
$NDS .= '"",'; //Weiteres Fax
$NDS .= '"",'; //Weiteres Telefon
$NDS .= '"",'; //Pager
$NDS .= '"",'; //Haupttelefon
$NDS .= '"",'; //Mobiltelefon 2
$NDS .= '"",'; //Telefon für Hörbehinderte
$NDS .= '"",'; //Telex
$NDS .= '"",'; //Abrechnungsinformationen
$NDS .= '"",'; //Benutzer 1
$NDS .= '"",'; //Benutzer 2
$NDS .= '"",'; //Benutzer 3
$NDS .= '"",'; //Benutzer 4
$NDS .= '"",'; //Beruf
$NDS .= '"",'; //Büro
$NDS .= '"' . $DS["email"] . '",'; //E-Mail-Adresse
$NDS .= '"",'; //E-Mail-Typ
$NDS .= '"' . $DS["email"] . '",'; //E-Mail: Angezeigter Name
$NDS .= '"' . $DS["email2"] . '",'; //E-Mail 2 Adresse
$NDS .= '"",'; //E-Mail 2 Typ
$NDS .= '"' . $DS["email2"] . '",'; //E-Mail 2 Angezeigter Name
$NDS .= '"' . $DS["email3"] . '",'; //E-Mail 3 Adresse
$NDS .= '"",'; //E-Mail 3 Typ
$NDS .= '"' . $DS["email3"] . '",'; //E-Mail 3 Angezeigter Name
$NDS .= '"",'; //Empfohlen von
$NDS .= '"' . $DS["geb"] . '",'; //Geburtstag
$NDS .= '"",'; //Geschlecht
$NDS .= '"",'; //Hobby
$NDS .= '"",'; //Initialen
$NDS .= '"",'; //Internet-Frei/Gebucht
$NDS .= '"",'; //Jahrestag
$NDS .= '"' . $DS["status"] . '",'; //Kategorien
$NDS .= '"",'; //Kinder
$NDS .= '"",'; //Konto
$NDS .= '"",'; //Name Assistent
$NDS .= '"",'; //Name des/der Vorgesetzten
$NDS .= '"' . $DS["notes"] & ', ' & $DS["notes2"] . '",'; //Notizen
$NDS .= '"",'; //Organisations-Nr.
$NDS .= '"",'; //Ort
$NDS .= '"",'; //Partner
$NDS .= '"",'; //Postfach geschäftlich
$NDS .= '"",'; //Postfach privat
$NDS .= '"",'; //Priorität
$NDS .= '"",'; //Privat
$NDS .= '"",'; //Regierungs-Nr.
$NDS .= '"",'; //Reisekilometer
$NDS .= '"",'; //Sprache
$NDS .= '"",'; //Stichwörter
$NDS .= '"",'; //Vertaulichkeit
$NDS .= '"",'; //Verzeichnisserver
$NDS .= '"' . $DS["hp"] . '",'; //Webseite
$NDS .= '""'; //Weiteres Postfach
$NDS .= '/n';
}
// Der komplette String wird dann in die Datei geschrieben
$dlfile = fopen("testfile.csv", w);
fwrite($dlfile, $NDS);
fclose($dlfile);
So, das ganze funktioniert soweit ganz gut. Allerdings habe ich in der .csv keine Zeilenumbrüche!!!
Ich habe gegoogled bis ich schwarz war. Alles was ich gefunden habe ist: Hänge ein "/n" oder ein "/r/n" an den String....
Wie Ihr seht habe ich das getan. Wenn ich die Datei in Notepad öffne habe ich eine einzige lange Zeile die Notepad von sich aus irgendwann umbricht.
Öffne ich sie in meinem favorisierten Editor (EvolvED) habe ich nur eine ellen lange Zeile.
Kann mir da wer weiterhelfen? Ich kapier das einfach nicht ....
Übrigens, kann ich statt die Datei nur zu erstellen diese nicht auch "nicht" schreiben und den String direkt zum download anbieten? Über "header content-type"???
Bin für jeden Rat dankbar....
MfG Sam
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 125562
Url: https://administrator.de/contentid/125562
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Sam!
Versuch mal anstatt "/r/n" das hier "\r\n".
Gruß Dieter
Versuch mal anstatt "/r/n" das hier "\r\n".
Gruß Dieter
Nach ein bisschen Googlen habe ich dann SELECT * INTO OUTFILE gefunden und dies erstmal in PHPMyAdmin ausprobiert.
Tolle Sache, leider stimmen die Datenfelder meines Adressbuches nicht mit Outlook überein.
Tolle Sache, leider stimmen die Datenfelder meines Adressbuches nicht mit Outlook überein.
wieso erstellst Du dir dann nicht einfach eine Temp.Tabelle und exportierst diese ?
CREATE TEMPORARY TABLE IF NOT EXISTS 'export'
SELECT
'' AS 'Anrede',
`vorname` AS 'Vorname',
/* usw. */
FROM `adressbook` ORDER BY `status`, `name`;
SELECT * INTO OUTFILE 'wo/auch/immer'
/* ggf. noch
FIELDS TERMINATED BY ','
FIELDS ENCLOSED BY '"'
LINES TERMINATED BY '\n'
*/
FROM `export`;