Peter Rehm's Blog

apple,development,life & more

CSV Dateien in MySQL importieren

Ohne Kommentare

Ich musste gerade eine Reihe Postleitzahlen importieren, daher habe ich eine Quick & Dirty Lösumg geschrieben um CSV Dateien zu importieren.

CODE:
<?php

class csv2mysql
{
/**
* DB Host
*/
var $host='';

/**
* DB User
*/
var $user='root';

/**
* DB Pass
*/
var $pass='';

/**
* DB Name
*/
var $db;

/**
* Table Name
*/
var $table;

/**
* CSV Separator
*/
var $separator=';';

/**
* Filename to import
*/
var $filename;

/**
* DB Handle
*/
var $db_handle;

/**
* File Handle
*/
var $file_handle;

/**
* Max Line length in CSV File
*/
var $max_line_length=1000;

/**
* Insert Count
*/
var $count=0;

/**
* Konstruktor to set the options
*
* options: dbname,tablename,separator
*/
function csv2mysql($options)
{
if(empty($options['dbname']))
{
die("you have to enter a database name!");
} else {
$this->db=$options['dbname'];
}

if(empty($options['table']))
{
die("you have to enter a table name!");
} else {
$this->table=$options['table'];
}

if(empty($options['filename']))
{
die("you have to enter a filename!");
} else {
$this->filename=$options['filename'];
if(!file_exists($this->filename))
{
die("file does not exist");
}
}

if(!empty($options['separator']))
{
$this->separator=$options['separator'];
}

$this->db_handle=mysql_connect($this->host,$this->user,$this->pass);
mysql_select_db($this->db,$this->db_handle);

return;
}

function convert()
{
$this->file_handle=fopen($this->filename,"r");
if($this->file_handle && $this->db_handle)
{
while($data=fgetcsv($this->file_handle,$this->max_line_length,$this->separator))
{
$res=mysql_query("INSERT INTO ".$this->table."
 VALUES (".join($data,',').")",$this->db_handle) or die(mysql_error());
if($res)
{
$this->count++;
}
}
echo $this->count;
} else {
die("could not open file or database");
}
}
}

$imp=new csv2mysql(array('filename'=>'/www/test.csv',
'dbname'=>'plzdb',
'table'=>'plz'));
$imp->convert();
?>


Aufgrund den anstehenden Prüfungen verzichte ich auf das erklären des Codes, das müsste man auch so verstehen können :-)

Geschrieben von Peter Rehm

18.01.2007 um 21:33:35

Abgelegt in PHP

0 Trackbacks zu CSV Dateien in MySQL importieren

Trackback-URL für diesen Eintrag

  1. Keine Trackbacks

0 Kommentare zu CSV Dateien in MySQL importieren

  1. Noch keine Kommentare

Kommentar schreiben

BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA