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

Tags für diesen Artikel: , , ,