Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用codeigniter导入和映射csv文件的最佳方法是什么_Php_Codeigniter_Csv_Import_Etl - Fatal编程技术网

Php 使用codeigniter导入和映射csv文件的最佳方法是什么

Php 使用codeigniter导入和映射csv文件的最佳方法是什么,php,codeigniter,csv,import,etl,Php,Codeigniter,Csv,Import,Etl,我正在尝试创建一个导入工具,该工具将读取csv文件,并允许我将其映射到表列并导入它。我正试图使用代码点火器来实现这一点 是否有人这样做并拥有一个库,或者是否有php和/或codeigniter中可用的工具。在我尝试重新发明轮子之前,我想先检查一下。我很久以前也做过类似的事情,我感觉很慷慨,所以这里有一段代码片段!-) 我让用户从前端的表单中选择适当的字段,但如果CSV文件从未更改,您可以始终硬编码 显然,您需要根据自己的需要(分隔符、字段名等)进行修改,但这应该可以让您从正确的方向开始 // g

我正在尝试创建一个导入工具,该工具将读取csv文件,并允许我将其映射到表列并导入它。我正试图使用代码点火器来实现这一点


是否有人这样做并拥有一个库,或者是否有php和/或codeigniter中可用的工具。在我尝试重新发明轮子之前,我想先检查一下。

我很久以前也做过类似的事情,我感觉很慷慨,所以这里有一段代码片段!-)

我让用户从前端的表单中选择适当的字段,但如果CSV文件从未更改,您可以始终硬编码

显然,您需要根据自己的需要(分隔符、字段名等)进行修改,但这应该可以让您从正确的方向开始

// get POST values
$objPost = (object) $this->input->post('arr_of_fields');

$fh_csv = fopen('YOUR CSV FILE');
$fh_tmp = fopen('YOUR TEMP FILE');

while( false !== ($line = fgets($fh_csv)) )

    $enclosed = ''; // or whatever your field is enclosed with
    $delimiter = ','; // or whatever your delimiter is

    $columns  = explode($enclosed.$delimiter.$enclosed, trim($line, $enclosed));

    // the $objPost->field_X signifies the index for that field [0,1,2,3,+++]
    $data = array(
       'field_1' => trim(@$columns[@$objPost->field_1], $enclosed),
       'field_2' => trim(@$columns[@$objPost->field_2], $enclosed),
       'field_3' => trim(@$columns[@$objPost->field_3], $enclosed),
       'field_4' => trim(@$columns[@$objPost->field_4], $enclosed),
    );

    // write line to temp csv file, tab delimited with new line
    $str = implode("\t", $data) . "\n";

    @fwrite($fh_tmp, $str); // write line to temp file
}
@fclose($fh_csv);
@fclose($fh_tmp);

// import from temp csv file into database
$sql    = sprintf("LOAD DATA LOCAL INFILE '%s'
            INTO TABLE `%s`
            FIELDS TERMINATED BY '\\t'
            LINES TERMINATED BY '\\n'
            (field_1, field_2, field_3, field_4)",
            "TEMP FILE",
            "DATABASE TABLE NAME");

$query  = $this->db->query( $sql );

// delete temp file
@unlink("TEMP FILE");
帮助您将db数据转换为csv格式。这将帮助您实现导出功能。没有可导入的CI库。那样的话我可以帮你