Toon posts:

MYSQL tabel -> Excel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

een beetje een noob vraag, maar ik wil dus een tabel die ik in Mysql heb ("oudleden") exporteren naar een tekstbestand (comma/tab delimited of hoe dan ook), en vervolgens dan weer importeren in excel (waar ik eventueel de goede kolomnamen erboven moet zetten; dat boeit niet zo).

Dus eigenlijk iets van "select * from oudleden > oudleden.txt". Dit kan niet, en met google vind ik alleen maar links naar odbc drivers, PHPmyadmin en mysqldump. Alle 3 niet handig, want ik wil het uiteindelijk in een script krijgen, maar wel mijn eigen script, niet dat van iemand anders.

Waarschijnlijk is het echt poep simpel, maar ik kan het niet vinden? (hoe komt het trouwens dat de search zo weinig topics geeft?)

  • Peetman
  • Registratie: Oktober 2001
  • Laatst online: 23:34

Peetman

Tjah....

En wat voor script dacht je aan? VBScript/ASP/JavaScript?

Verwijderd

Topicstarter
Ik ben met PHP/MYSQL bezig, maar ik vroeg me af of er niet gewoon een commando was om een output naar file te genereren. Maar er zullen toch wel commando's zijn die je tabel kunnen outputten naar een comma/tab delimited file?

Verwijderd

Heb je al naar MySQLdump.exe gekeken?
Daar kun je een heleboel mee doen....

  • Peetman
  • Registratie: Oktober 2001
  • Laatst online: 23:34

Peetman

Tjah....

Ik ben geen kenner van PHP, maar ik ga er vanuit dat je net als in bijv ASP de tabel in kan lezen in een recordset.
Dan loop je door die recordset heen en schrijf je elke keer de waarde van de kolom weg met een komma erachter naar een textfile.

Hier de methode om een textfile te maken:
code:
1
2
3
4
5
6
7
8
9
# Opening a file for writing.

<?
$my_file = "/path/to/file.txt";
$message = "This is a line of text"."\n";
$fp = fopen ($my_file, 'w');
fwrite ($fp, $message);
fclose ($fp); }
?>

[ Voor 0% gewijzigd door Peetman op 13-08-2002 13:00 . Reden: toevoeging ]


Verwijderd

MYSQL kan toch heel goed een csv file maken !?
Zit dat ook niet in PhpMyAdmin :?

Verwijderd

Topicstarter
Ja dat bedoel ik dus, maar dan hoe ik het "zelf" kan doen, zonder rare scripts. Ik zit nu naar mysqldump te kijken, want ik dacht dus dat je daar alleen een complete dump van je database mee kon maken (als backup), maar zie nu dat je er ook tabellen mee kan dumpen. Eens kijken of dat iets is.

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-08 16:45
Je kan een html tabel maken met alle leden erin. Als dat eenmaal werkt, voeg je boven aan je php
PHP:
1
Header('ContentType: application/vnd.ms-excel');
in en krijg je de resultaten in excel te zien. Als het niet direct werkt kan dit komen, omdat IE niet altijd op het contenttype let. Maar als je achter de url "?ennogwatzooi" plakt, kijkt hij wel naar het contenttype en laat hij excel in een ie venster zien. Die kan je dan gewoon als excel opslaan.

Verwijderd

Topicstarter
Hmm. Ik gebruik nu de volgende query:

mysql> select * into outfile "oudleden.txt" fields terminated by '|' lines terminated by "\n" from oudleden;

Maar nu krijg ik de volgende error:
ERROR 1045: Access denied for user: 's494208@localhost' (Using password: YES)

Volgens mij zou dit namelijk de query moeten zijn (dus gewoon vanuit mysql). Maar waarom werkt dit dan nog niet?

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-08 16:45
Als je dat wilt doen, moet je file access hebben. Als je zelf host is dat gewoon een kwestie van instellen. Als je niet zelf host, tja dan moet je de hoster heeel lief aankijken :) ?

Verwijderd

Topicstarter
Tsja, het is dus op de studentenserver hier, maar ik heb natuurlijk wel gewoon access tot mijn eigen directory (~ of /home/www/wwwpeople/s494208), dan zou het toch gewoon moeten werken?

Verwijderd

Topicstarter
OK, ik begrijp dus dat select * into outfile niet kan, de database "user" mag dat gewoon niet, omdat je anders teveel rechten zou krijgen. Het zal dus moeten met MYSQLDUMP, maar die dumpt alleen met complete queries, iets wat ik dus niet wil (geen insert into commando's usw, maar gewoon platte text met tabs en linebreaks bijvoorbeeld, waar excel zich niet in verslikt).

  • FastWallie
  • Registratie: September 2001
  • Laatst online: 25-11-2024
Volgende script geeft een voorbeeld. Dit gebruik ik voor een download van een sql- query naar csv. Er zijn handigere manieren om et te doen alleen heb je niet altijd die rechten. Let op de code na de eerste while loop

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<html>
<head>
<title>CALENDERSITE</title>
<META name="description" content="Export your favourite sport events to Outlook Calender, you will never forget an event">
<META name="keywords" content="outlook, import, events, sport, sport events, sport calender, calender, download, date,outlook calender">
<link rel="STYLESHEET" type="text/css" href="calender.css">
</head>
<body background="images/dot.gif" bgcolor="#DBDBDB" leftmargin=10 topmargin=10 bgproperties="FIXED">
<?php   
if ($catid=='') {
echo "<p class=normal>Sorry, we found nothing to export</p>\n";
}
else
{   $csv_output = 'Subject,Start Date,Start Time,All day event,Reminder on/off,Reminder Date,Reminder Time,Description,Location,Private,Sensitivity,Categories';
   $conn = mysql_connect();
   $db = mysql_select_db("database",$conn);
if ($subcatid=='') {
   $result = mysql_query("select  veld1, veld2, etc from bla;",$conn); 
}
else
{
 $result = mysql_query("select veld2, veld3, veld10 from bla;",$conn); 
}

   while($row = mysql_fetch_array($result)) { 
       $csv_output .= "\r$row[0],$row[1],$row[2],$row[3],$row[4],$row[5],$row[6],$row[7],$row[8],$row[9],$row[10],$row[11]";
       } 
   $time = time();
   $fp = fopen("export/$time.csv", "a"); 
   fwrite($fp,$csv_output);
   fclose($fp); 
   if (file_exists("export/$time.csv")) {
     echo "<p class=normal><a href='export/$time.csv'>Download this file $time.csv and import it in your Outlook calender</a></p>\n";
   echo "<p class=normal>If you don't know how to import csv (comma seperated files) into outlook click <a href='howtoimport.php'>Here</a></p>\n";
   }

}
?>
</body>
</html>

[ Voor 0% gewijzigd door FastWallie op 13-08-2002 13:47 . Reden: Formatting ]

http://www.jawal.nl


Verwijderd

Excel -> Data -> Import External Data -> New Databasequery
maar dat kan alleen als je mysqlserver ook verbindingen van buitenaf accepteert en dat zal in dit geval wel niet, wilde toch ff het feit noemen dat het dus standaard in Excel zit...

Verwijderd

Verwijderd schreef op 13 augustus 2002 @ 13:38:
OK, ik begrijp dus dat select * into outfile niet kan, de database "user" mag dat gewoon niet, omdat je anders teveel rechten zou krijgen. Het zal dus moeten met MYSQLDUMP, maar die dumpt alleen met complete queries, iets wat ik dus niet wil (geen insert into commando's usw, maar gewoon platte text met tabs en linebreaks bijvoorbeeld, waar excel zich niet in verslikt).
en die file ff editen met een replace all...

INSERT INTO tabelnaam (blatieblaat) VALUES (' -> weghalen
'); -> weghalen
',' vervangen door een tab?

Verwijderd

Topicstarter
Ok, ik ben er redelijk uit. Met MYSQL -e kan ik een mooie dump maken, alleen verslikt excel zich in de newlines. Ik zal dus toch in PHP een csv script moeten schrijven, of de kolommen waarin newlines voorkomen (text datatypes) niet gebruiken (heb ik ook niet nodig voor een mailmerge, waar ik de output voor wilde hebben).
Bedankt allemaal, weer een hoop geleerd vandaag! :)

Verwijderd

dan doe je met bijvoorbeeld editplus gewoon even een

replace all \n <br> oid op je dump?

edit:

hmm, moet je er wel voor zorgen dattie niet ook het eind van de regel weghaald hehe...
Pagina: 1