· 10 years ago · Apr 29, 2016, 09:55 AM
1<?php
2$sampleCsvFile = '/tmp/import.csv';
3$octets = file_put_contents($sampleCsvFile, '1;2');
4printf("Wrote %s octets in %sn", $octets, $sampleCsvFile);
5
6$query = <<< 'query'
7LOAD DATA LOCAL INFILE "/tmp/import.csv" INTO TABLE T FIELDS TERMINATED BY ';' ENCLOSED BY '"' (a, b); commit;
8query;
9
10$dbhost = 'localhost';
11$dbuser = 'root';
12$dbpass = 'root';
13
14$pdo = new PDO('mysql:host='.$dbhost.';', $dbuser, $dbpass, [
15 PDO::MYSQL_ATTR_READ_DEFAULT_GROUP => 'client',
16 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
17 PDO::MYSQL_ATTR_LOCAL_INFILE => true,
18]);
19
20printf("load data infile: %bn", $pdo->setAttribute(PDO::MYSQL_ATTR_LOCAL_INFILE, true));
21
22$exec = $pdo->exec('drop database if exists db; create database if not exists db; use db; create table T (a int, b int null); insert into T (a,b) values (0, 0); commit;');
23printf("create database, table and insert one tuple: %bn", $exec);
24
25$rows = $pdo->query('select a, b from T')->fetchAll(PDO::FETCH_OBJ);
26foreach($rows as $row)
27{
28 printf("%s %sn", $row->a, $row->b);
29}
30$exec = $pdo->exec($query);
31printf("LOAD DATA INFILE exec: %bn", $exec);
32$rows = $pdo->query('select a, b from T')->fetchAll(PDO::FETCH_OBJ);
33
34foreach($rows as $row)
35{
36 printf("%s %sn", $row->a, $row->b);
37}
38
39$exec = $pdo->exec('drop database if exists db;');
40printf("exec: %bn", $exec);
41
42$unlink = unlink($sampleCsvFile);
43printf("Unlinked %s: %bn", $sampleCsvFile, $unlink);