大数据csv导入mysql_CSV导入MySQL

打开Dreamweaver或记事本编辑器,并创建新的PHP页面,并将它命名import.php 现在,在您的网页csv_importer.php文件中包含.

include ( "csv_importer.php" );

用于连接MySQL数据库,请写下面这些代码

$conn = @mysql_connect("localhost","root","password");

现在,选择数据库中包含

@mysql_select_db("yourdbname",$conn);

现在,下面编写代码。只需要提供要导入数据的表名。保留所有其它代码,如下:

//create new importer object for importing data

$c = new CSV_Importer;

//display log errors at end

$c->log_errors = true;

//skip the very first row in CSV file

$c->skip_top = true;

//Type of Server (default MYSQL), you can also use this MSSQL and PGSQL

$c->server = MYSQL;

//Database Table where File will be imported

$c->table = "yourtablename";

现在必须根据CSV文件的模板来设置表的列:

$c->SetColumnSequence("Field1,Field2,Field3,Field4,Field5");

在这里,csv文件引用从将导入到表导入到数据库

$result = $c->import("Your_CSV_Name.csv",$conn);

现在,在网页csv_importer.php文件如下。

if($result === FALSE){

//there was some error importing data

$c->DumpErrors();

}else

{

//Your data imported successfully, it will print number of rows inserted.

print "Total records inserted are $result in table $c->table";

}

关闭MySQL连接

@mysql_close();

以下是完整代码:

class CSV_Importer {

var $fields=false;

var $table=false;

var $skip_top=false;

var $log_errors=true;

var $errors=Array();

var $server=0;

var $line_size = 0;

function SetColumnSequence() {

$argc = func_num_args();

$arg1 = func_get_arg(0);

if(!is_string($arg1) )

die("warning - Argument to CSV_Importer::SetColumnSequence must be a string

");

$this->fields = explode(",",trim(str_Replace(" ","",$arg1)));

}

function getCSVArray($csv,$skip_first=false) {

$ret = Array();

$f = fopen($csv,"r");

if($skip_first)

$first_row = fgetcsv($f,$this->line_size);

while($csv_row = fgetcsv($f,$this->line_size)) {

if(count($csv_row)==1 and trim($csv_row[0]) == "") #empty row

continue;

foreach($csv_row as $ke => $va) {

$va = str_replace('"',""",trim($va));

//$va = str_replace("

"," ",$va);

$csv_row[$ke] = $va;//str_replace(""," ",$va);

}

$ret []= $csv_row;

}

fclose($f);

return $ret;

}

function import($filename,$conn=false) {

if(!is_array($this->fields))

die("warning - Set fields first using CSV_Importer::SetColumnSequence

");

if(!is_string($this->table))

die("warning - Set table first, CSV_Importer->table ="tablename";

");

$rows = $this->getCSVArray($filename,$this->skip_top);

$fields = Array();

$skips = Array();

$x=0;

foreach($this->fields as $field) {

if(trim($field)=="")

$skips []= $x;

else

$fields []= "`$field`";

$x++;

}

$this->errors = Array();

$x=1;

foreach($rows as $row) {

if(count($row)==0) continue;

if(!empty($skips)) {

foreach($skips as $index)

unset($row[$index]);

}

if(empty($row)) continue;

if(count($row) < count($fields))$fields = array_slice($fields,0,count($row));

if(count($fields) < count($row))$row = array_slice($row,0,count($fields));

$nfields = implode(",",$fields);

$row = """.implode("","",$row).""";

$query = "INSERT INTO `$this->table` ($nfields) values($row)";

switch($this->server) {

case 0: $qFunc = "mysql_query"; break;

case 1: $qFunc = "mssql_query"; break;

case 2: $qFunc = "pg_query"; break;

}

$r = @$qFunc($query,$conn);

if(!$r and $this->log_errors)

$this->errors []= "Row#$x: ($query)". mysql_error();

$x++;

}

if(!empty($this->errors))

return FALSE;

return $x;

}

function DumpErrors() { echo implode("

",$this->errors); }

};

define('MYSQL',0);#MySQL Server

define('MSSQL',1);#Microsoft SQL Server

define('PGSQL',2);#Postgre SQL Server

?>

上面的教程脚本@2014 by yiibai.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值