phpcsv导入数据库,php excel导入数据库

php如何读取CSV大文件并且将其导入数据库示例

思路:

创新互联建站主营鄂州网站建设的网络公司,主营网站建设方案,成都app软件开发,鄂州h5微信小程序开发搭建,鄂州网站营销推广欢迎鄂州等地区企业咨询

读取csv文件,每读取一行数据,就插入数据库

示例

文件夹结构

/

file.csv    //csv大文件,这里只模拟三行数据,不考虑运行效率(PS:csv文件格式很简单,文件一般较小,解析很快,运行效率的瓶颈主要在写入数据库操作)

index.php    //php文件

file.csv

singi,20

lily,19

daming,23

index.php

/**

* 读取csv文件,每读取一行数据,就插入数据库

*/

//获取数据库实例

$dsn = 'mysql:dbname=test;host=127.0.0.1';

$user = 'root';

$password = '';

try {

$db = new PDO($dsn, $user, $password);

} catch (PDOException $e) {

echo 'Connection failed: ' . $e-getMessage();

}

//读取file.csv文件

if (($handle = fopen("file.csv", "r")) !== FALSE) {

while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {

//写入数据库

$sth = $db-prepare('insert into test set name=:name,age=:age');

$sth-bindParam(':name',$row[0],PDO::PARAM_STR,255);

$sth-bindParam(':age',$row[1],PDO::PARAM_INT);

$sth-execute();

}

fclose($handle);

}

数据表

CREATE TABLE `test` (

`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(255) NULL DEFAULT '' COLLATE 'utf8mb4_bin',

`age` INT(10) NULL DEFAULT '0',

PRIMARY KEY (`id`)

)

COLLATE='utf8mb4_bin'

ENGINE=InnoDB;

运行结束后,数据库中会插入csv中的三行数据

dockerphp导入文件到数据库

进入docker的mysql容器。

进入容器导出数据,首先执行dockerps,找到mysql容器的name,然后执行dockerexec-itmysql/bin/bash,进入容器,执行命令whereismysql,找到mysql的运行路径,我这里是:/usr/local/mysql/bin,用cd进入cd/usr/local/mysql/bin。请注意,这里的路径是指docker容器内的路径,跟您的宿主机路径没有关系,执行导出命令mysqldump-u用户名-p数据库名保存文件.sql,输入密码后基本导出成功,请注意,保存文件的路径要设置在volumes下面,即/var/lib/mysql/下,随后输入exit退出容器内部,回到宿主机上,我们就能够找到导出的数据文件了,如果您要导出csv格式的话,将mysqldump的那句命令改为:mysql-u用户名--password=密码--database=数据库名--execute='SELECT`FIELD`,`FIELD`FROM`TABLE`LIMIT0,10000'-X保存文件.sql即可。

docker的作用是:1、更好地利用资源,2、为微服务定制,3、在云服务提供商之间方便移植,4、方便利用API端,5、便于技术的创新。

php中如何导入导出CSV格式的文件

php导入CSV文件:

$line_number = 0;

$handle = fopen("1.xls","r");

while ($data = fgetcsv ($handle, 100000, ",")) {

if($line_number == 0){

$line_number++;

continue;

}

//z这样就可以去掉表头的那一行

for ($i = 0; $i count($data); $i++) {

$ziduan = $data[$i];

}

}

2.php导出CSV文件

header( "Cache-Control: public" );

header( "Pragma: public" );

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:attachment;filename=txxx.csv");

header('Content-Type:APPLICATION/OCTET-STREAM');

ob_start();

$header_str =  iconv("utf-8",'gbk',"信息id,标题,名称,电话,QQ,Email,内容,时间\n");

$file_str="";

$mysqli= new mysqli('localhost','root','','test');

if (mysqli_connect_errno()) {

printf("Connect failed: %s\n", mysqli_connect_error());

exit();

}

$sql='select *  from messages';

$mysqli-query("set names utf8 ;");

$result=$mysqli-query($sql);

if($result){

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

$file_str.= $row['id'].','.$row['title'].','.$row['name'].','."'{$row['telephone']}'".','.$row['qq'].','.$row['email'].','.str_ireplace(',',',',$row['content']).','.$row['retime']."\n";

}

}else{

echo "nonono!!!";

}

$file_str=  iconv("utf-8",'gbk',$file_str);

ob_end_clean();

echo $header_str;

echo $file_str;

?

PHP如何对CSV大文件进行读取并导入数据库

fgetcsv 可以读取fopen打开的文件,并读取一行,

这样可以防止文件太大而内存溢出

然后每读取一定行数,入库一次,

php中如何将execl的数据导入到数据库中

1.使用PHP

Excel

Parser

Pro软件,但是这个软件为收费软件;

2.可将EXCEL表保存为CSV格式,然后通过

phpmyadmin

或者SQLyog导入,SQLyog导入的方法为:

·将EXCEL表另存为CSV形式;

·打开SQLyog,对要导入的表格

右击

,点击“导入”-“导入使用加载本地CSV数据”;

·在弹出的对话框中,点击“改变..”,把选择“填写excel友好值”,点击确定;

·在“从文件导入”中选择要导入的CSV文件路径,点击“导入”即可导入数据到表上;

3.一个比较笨的手工方法,就是先利用excel生成

sql语句

,然后再到mysql中运行,这种方法适用于

excel表格

导入到各类

sql数据库

·假设你的表格有A、B、C三

列数据

,希望导入到你的数据库中表格tablename,对应的字段分别是col1、col2、col3

·在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下:

1)增加一列(假设是D列)

2)在第一行的D列,就是D1中输入公式:

=CONCATENATE("insert

into

tablename

(col1,col2,col3)

values

(",A1,",",B1,",",C1,");")

3)此时D1已经生成了如下的sql语句:

insert

into

table

(col1,col2,col3)

values

('a','11','33');

4)将D1的公式复制到所有行的D列(就是用鼠标点住D1单元格的右下角一直拖拽下去啦)

5)此时D列已经生成了所有的sql语句

6)把D列复制到一个纯文本文件中,假设为sql.txt

·把sql.txt放到数据库中运行即可,你可以用命令行导入,也可以用phpadmin运行。


分享文章:phpcsv导入数据库,php excel导入数据库
标题链接:http://hbruida.cn/article/hdpdhh.html