csv文件导入mysql编码_CSV 导入mysql 数据库

CSV 直译的就是逗号分隔值

顾名思义,就是用英文的 "," 做分割。 CSV 导入mysql 数据库的核心原理也就在于此。

我们将会用到一个关键函数 fgetcsv(),它的解释如下:

fgetcsv() 函数从文件指针中读入一行并解析 CSV 字段。

与 fgets()

类似,不同的是 fgetcsv() 解析读入的行并找出 CSV

格式的字段,然后返回一个包含这些字段的数组。

fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。

注释:

PHP 4.3.5 起,fgetcsv() 的操作是二进制安全的。

用法:

fgetcsv(file,length,separator,enclosure)

file

必需。规定要检查的文件。

length

可选。规定行的最大长度。必须大于 CVS 文件内最长的一行。

在 PHP 5 中该参数是可选的。在 PHP 5 之前是必需的。

如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。

separator

可选。设置字段分界符(只允许一个字符),默认值为逗号。

enclosure

可选。设置字段环绕符(只允许一个字符),默认值为双引号。

该参数是在 PHP 4.3.0 中添加的。

完整代码:

// 定义获取时间函数

function getmicrotime(){

list($usec, $sec) = explode(' ',microtime());

return ((float)$usec + (float)$sec);

}

$time_start = getmicrotime();

// 连接数据库

/*

include("database_class.php");

$db = new Database;

*/

mysql_connect('localhost','root','root');

mysql_select_db('test');

// 操作csv

$handle = fopen ('test.csv','r');

$sql="insert into `test` (`id`,`name`,`sex`,`nation`) values ('',";

while ($data = fgetcsv ($handle)) {

$num = count ($data);

for ($i=0; $i

if($i == $num-1){

$sql .= "'".$data[$i]."')";

break;

}

$sql .= "'".$data[$i]."',";

}

print '
';

echo $sql.'
';

mysql_query($sql);

echo 'sql语句执行成功!
';

$sql="insert into `test` (`id`,`name`,`sex`,`nation`) values ('',";

}

fclose ($handle);

// 显示执行时间

$time_end = getmicrotime();

$time = $time_end - $time_start;

echo "程式执行时间:".$time."秒
";

// 显示数据库结果

$result = mysql_query('select * from `test`');

while($row = mysql_fetch_array($result)){

echo $row['id'],'
',$row['name'],'
',$row['sex'],'
',$row['nation'],'
';

}

fgetcsv 例子

$file = fopen("contacts.csv","r");

while(! feof($file))

{

print_r(fgetcsv($file));

}

fclose($file);

?>

CSV 文件:

George, John, Thomas, USA

James, Adrew, Martin, USA

输出类似:

Array

(

[0] => George

[1] => John

[2] => Thomas

[3] => USA

Array

(

[0] => James

[1] => Adrew

[2] => Martin

[3] => USA

)

csv.rar (1.2 KB)

下载次数: 56

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-04-16 07:23

浏览 7138

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值