将txt文件导进去数据库

sanlanlan 2019-1-5 标签: PHP 浏览:892 评论:0

//file.txt

  1   2010-02-09 09:09:01 9
  2   2010-02-09 09:09:02 9
  3   2010-02-09 09:09:03 9
  4   2010-02-09 09:09:04 9
  5   2010-02-09 09:09:05 9

$content = file_get_contents('file.txt');

        $data = preg_match_all('/\\S+/',$content,$match);

        $dataInfo = [];
        if($match){
            $dataInfo = array_chunk($match[0],7);
        }

        $maxNum = 1000;
        $i = 0;
        $values = '';

        if($dataInfo) {
            foreach ($dataInfo as $val) {
                $time = strtotime($val[1].' '.$val[2]);
                $values .= ",(null,$val[0],$time,$val[3])";
                $values = trim($values, ',');
                $i++;

                if ($maxNum === $i) {
                    $sql = 'insert into hr_attend (id,job_num,time,count) values ' . $values;
                    //执行插入数据库操作
   
                    $i = 0;
                    $values = '';
                }
            }
        }
        if($i > 0){
            $sql = 'insert into hr_attend (id,job_num,time,count) values '.$values;
            //执行插入数据库操作
            unset($i);
            unset($values);
        }
     

        exit;




//two:

http://www.jb51.net/article/79854.htm


//thrid


mysql中导入txt文件数据的操作指令
 
学习总结基本的MySQL数据库导入导出操作
   www.2cto.com  
 1 表tt的格式:
 
 CREATE TABLE `tt` (
  `ind` int NOT NULL auto_increment,
  `name` char(100) default NULL,
  PRIMARY KEY  (`ind`)
 )
 
2 文件d.txt的内容示例:
 1,a
 2,b
 3,c
 
 3 导入命令:
 mysql> load data infile 'd.txt' into table tt
    -> fields terminated by','
    -> lines terminated by'\r\n'
 
 注意的地方:
 1)、文件可以使用绝对路径如'c:/d.txt',否则请将文件放在数据库根目录中
 2)、因为字段之间用了逗号隔开,所以必须fields terminated by',',否则导入失败
 3)、因为Winsows中行以“\r\n”隔开,所以必须lines terminated by'\r\n',
 如果不设置这个参数,也可导入成功,但是会多导入一个“\r”控制字符,可能在可视化
 MySQL工具中看不出字段异样,但是在MySQL命令行中显示会明显混乱。
 4)、如果表tt非空,且文件中的ind值在表中有重复,会提示错误,并导入失败。
 
 只导入name字段,文件d.txt的内容:
 a
 b
 c
 
 mysql> load data infile 'd.txt' into table tt
    -> lines terminated by'\r\n'
    -> (name);
 
 load data 命令还支持更复杂的文本格式、文件编码等,可参考官方文档。
 
 5 导出到数据到windows文本文件时,为了方便查看,也需要相同的设置
 mysql> select * from tt into outfile 'd.txt'
    -> fields terminated by','
    -> lines terminated by'\r\n'
//four


//window

一、 建立测试表,准备数据
首先建立一个用于测试的表示学生信息的表,字段有id、姓名、年龄、城市、薪水。Id和姓名不
能为空。



  1. create table person(  
  2. id int not null auto_increment,  
  3. name varchar(40) not null,  
  4. city varchar(20),  
  5. salary int,  
  6. primary key(id)  
  7. )engine=innodb charset=utf8;   
接着写一个用于导入的文本文件:c:/data.txt。
张三 31 北京 3000
李四 25 杭州 4000
王五 45 /N 4500
小明 29 天津 /N 



每一项之间用Tab键进行分隔,如果该字段为NULL,则用/N表示。
二、 导入数据
输入命令,进行导入。 

load data local infile “c:/data.txt”  

into table person(name,age,city,salary);  


其中local表示本地。执行后,可以看到NULL数据也被正确地导入。
三、 导出数据

现在将这个表导出为文本文件:c:/data_out.txt。

select name,age,city,salary  

into outfile “c:/data_out.txt”  

lines terminated by “/r/n”  

from person; 

其中lines terminated by “/r/n”表示每一行(即每一条记录)用/r/n分隔,/r/n是window系
统的换行符。导出的data_out.txt与data.txt的内容完全一样。
四、 运行环境

Windows vista home basic
MySQL 5.1.34-community
五、 注意

字段之间的分隔和记录(行)之间的分隔默认是/t(即Tab)和/n。但可以改变,如:
FIELDS TERMINATED BY ',' --字段用,进行分隔
LINES TERMINATED BY ';' --记录用; 进行分隔
另外要注意其它操作系统的换行符与windows可能不相同。

本文相关标签: php

发表评论: