MySQL Tabelle exportieren
Liebe Gemeinde,
ich stehe gerade mal wieder vor einer Herausforderung, ich möchte gerne Werte aus einer MySQL Tabelle exportieren. Hierzu habe ich folgende Datenbankaufbau:
Dabei nutze ich folgendes PHP Skript:
Die Ausgabe ist wie folgt:
Allerdings würde ich gerne folgende Ausgabe habe (in der 2. Spalte soll kein Anführungszeichen stehen):
ich stehe gerade mal wieder vor einer Herausforderung, ich möchte gerne Werte aus einer MySQL Tabelle exportieren. Hierzu habe ich folgende Datenbankaufbau:
CREATE TABLE `users` (
`user_id` int(11) NOT NULL,
`user_email` varchar(255) NOT NULL,
`user_name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `users`
ADD PRIMARY KEY (`user_id`),
ADD UNIQUE KEY `user_email` (`user_email`),
ADD KEY `user_name` (`user_name`);
ALTER TABLE `users`
MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT;
INSERT INTO `users` (`user_id`, `user_email`, `user_name`) VALUES
(1, 'Jane Doe', 'jane@doe.com'),
(2, 'Joe Doe', 'joe@doe.com'),
(3, 'John Doe', 'john@doe.com'),
(4, 'Julie Doe', 'julie@doe.com'),
(5, 'Johan Doe', 'johan@doe.com'),
(6, 'Joanne Doe', 'joanne@doe.com'),
(7, 'Juliet Doe', 'juliet@doe.com'),
(8, 'June Doe', 'june@doe.com'),
(9, 'Juan Doe', 'juan@doe.com'),
(10, 'Jamir Doe', 'jamir@doe.com'),
(11, 'Jaden Doe', 'jaden@doe.com'),
(12, 'James Doe', 'james@doe.com'),
(13, 'Janus Doe', 'janus@doe.com'),
(14, 'Jason Doe', 'jason@doe.com'),
(15, 'Jay Doe', 'jay@doe.com'),
(16, 'Jeff Doe', 'jeff@doe.com'),
(17, 'Jenn Doe', 'jenn@doe.com'),
(18, 'Joah Doe', 'joah@doe.com'),
(19, 'Joyce Doe', 'joyce@doe.com'),
(20, 'Joy Doe', 'joy@doe.com'),
(21, 'Juke Doe', 'juke@doe.com'),
(22, 'Johnnie Doe', 'johnnie@doe.com'),
(23, 'Jim Doe', 'jim@doe.com'),
(24, 'Jess Doe', 'jess@doe.com'),
(25, 'Jabril Doe', 'jabril@doe.com');
Dabei nutze ich folgendes PHP Skript:
<?php
$dbHost = "localhost";
$dbName = "test";
$dbChar = "utf8";
$dbUser = "root";
$dbPass = "";
try {
$pdo = new PDO(
"mysql:host=$dbHost;dbname=$dbName;charset=$dbChar",
$dbUser, $dbPass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
]
);
} catch (Exception $ex) { exit($ex->getMessage()); }
$csvFile = "export.txt";
$handle = fopen($csvFile, "w");
if ($handle === false) { exit("Error creating $csvFile"); }
$stmt = $pdo->prepare("SELECT * FROM `users`");
$stmt->execute();
while ($row = $stmt->fetch()) {
fputcsv($handle, [$row["user_id"], $row["user_email"], $row["user_name"]]);
}
fclose($handle);
?>
Die Ausgabe ist wie folgt:
1,"Jane Doe",jane@doe.com
2,"Joe Doe",joe@doe.com
3,"John Doe",john@doe.com
4,"Julie Doe",julie@doe.com
5,"Johan Doe",johan@doe.com
6,"Joanne Doe",joanne@doe.com
7,"Juliet Doe",juliet@doe.com
8,"June Doe",june@doe.com
9,"Juan Doe",juan@doe.com
10,"Jamir Doe",jamir@doe.com
11,"Jaden Doe",jaden@doe.com
12,"James Doe",james@doe.com
13,"Janus Doe",janus@doe.com
14,"Jason Doe",jason@doe.com
15,"Jay Doe",jay@doe.com
16,"Jeff Doe",jeff@doe.com
17,"Jenn Doe",jenn@doe.com
18,"Joah Doe",joah@doe.com
19,"Joyce Doe",joyce@doe.com
20,"Joy Doe",joy@doe.com
21,"Juke Doe",juke@doe.com
22,"Johnnie Doe",johnnie@doe.com
23,"Jim Doe",jim@doe.com
24,"Jess Doe",jess@doe.com
25,"Jabril Doe",jabril@doe.com
Allerdings würde ich gerne folgende Ausgabe habe (in der 2. Spalte soll kein Anführungszeichen stehen):
1,Jane Doe,jane@doe.com
2,Joe Doe,joe@doe.com
3,John Doe,john@doe.com
4,Julie Doe,julie@doe.com
5,Johan Doe,johan@doe.com
6,Joanne Doe,joanne@doe.com
7,Juliet Doe,juliet@doe.com
8,June Doe,june@doe.com
9,Juan Doe,juan@doe.com
10,Jamir Doe,jamir@doe.com
11,Jaden Doe,jaden@doe.com
12,James Doe,james@doe.com
13,Janus Doe,janus@doe.com
14,Jason Doe,jason@doe.com
15,Jay Doe,jay@doe.com
16,Jeff Doe,jeff@doe.com
17,Jenn Doe,jenn@doe.com
18,Joah Doe,joah@doe.com
19,Joyce Doe,joyce@doe.com
20,Joy Doe,joy@doe.com
21,Juke Doe,juke@doe.com
22,Johnnie Doe,johnnie@doe.com
23,Jim Doe,jim@doe.com
24,Jess Doe,jess@doe.com
25,Jabril Doe,jabril@doe.com
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2957578938
Url: https://administrator.de/contentid/2957578938
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
das " ist ja aus gutem Grund da wegen der Leerzeichen.
Aber Deine Daten, Deine Verantwortung.
Ich würde die Ausgabe einfach in einen String schreiben und diesen am Ende in eine Datei schreiben.
Bei größeren Datenmenge wird das zum Speicherproblem. Da muss man mehr speichern.
das " ist ja aus gutem Grund da wegen der Leerzeichen.
Aber Deine Daten, Deine Verantwortung.
Ich würde die Ausgabe einfach in einen String schreiben und diesen am Ende in eine Datei schreiben.
$output = ""
while ($row = $stmt->fetch()) {
$output .= $row["user_id"] . ", " . $row["user_email"] . ", " . $row["user_name"] . "\n";
}
file_put_contents($csvFile, $output);
Bei größeren Datenmenge wird das zum Speicherproblem. Da muss man mehr speichern.
(in der 2. Spalte soll kein Anführungszeichen stehen):
Da freut sich das nachfolgende Programm wenn in der Spalte dann Mustermann, Max steht . Wie gesagt die String-Separator's gibt es nicht ohne Grund in CSV Dateien!<?php
$dbHost = "localhost";
$dbName = "test";
$dbChar = "utf8";
$dbUser = "root";
$dbPass = "";
try {
$pdo = new PDO(
"mysql:host=$dbHost;dbname=$dbName;charset=$dbChar",
$dbUser, $dbPass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_NAMED
]
);
} catch (Exception $ex) { exit($ex->getMessage()); }
$csvFile = "export.txt";
$output = ""
$stmt = $pdo->prepare("SELECT * FROM `users`");
$stmt->execute();
while ($row = $stmt->fetch()) {
$output .= $row["user_id"] . ", " . $row["user_email"] . ", " . $row["user_name"] . "\n";
}
file_put_contents($csvFile, $output);
?>