106 lines
2.6 KiB
PHP
106 lines
2.6 KiB
PHP
<?php
|
|
|
|
require_once(__DIR__ . '/../../vendor/autoload.php');
|
|
|
|
use Symfony\Component\Dotenv\Dotenv;
|
|
|
|
// get database information from .env
|
|
function getDatabaseInfo()
|
|
{
|
|
$dotenv = new Dotenv();
|
|
$dotenv->loadEnv(__DIR__.'/../../.env');
|
|
|
|
$db_info = $_ENV['DATABASE_URL'];
|
|
|
|
// sample format of db_info: mysql://db_user:db_password@127.0.0.1:3306/resq?charset=utf8
|
|
// dsn for PDO needs to be: mysql:host=127.0.0.1:3306;dbname=resq;charset=UTF8
|
|
|
|
preg_match('/^mysql:\/\/(.*):(.*)@(.*):(.*)\/(.*)\?(.*)/', $db_info, $result);
|
|
|
|
$db_type = 'mysql:host=';
|
|
$user = $result[1];
|
|
$pass = $result[2];
|
|
$ip_port = $result[3] . ':' . $result[4] . ';';
|
|
$db_name = 'dbname=' . $result[5] . ';';
|
|
$charset = $result[6];
|
|
|
|
$dsn = $db_type . $ip_port . $db_name . $charset;
|
|
|
|
$db_data = array($dsn, $user, $pass);
|
|
|
|
return $db_data;
|
|
}
|
|
|
|
// load csv
|
|
$csv = fopen($argv[1], 'r');
|
|
$output_file = $argv[2];
|
|
|
|
$output_fh = fopen($output_file, "w");
|
|
|
|
if (!file_exists($argv[1]))
|
|
{
|
|
$err_message = "No csv input file found." . "\n";
|
|
fwrite($output_fh, $err_message);
|
|
fclose($output_fh);
|
|
exit();
|
|
}
|
|
|
|
list($dsn, $user, $pass) = getDatabaseInfo();
|
|
|
|
// error_log($dsn);
|
|
// error_log($user);
|
|
// error_log($pass);
|
|
|
|
// connect to db
|
|
$db = new PDO($dsn, $user, $pass);
|
|
|
|
// prepared statement
|
|
$sth = $db->prepare('insert into dealer (name, address, branch_code) values (:name, :address, :branch_code)');
|
|
|
|
$rownum = 0;
|
|
while (($row = fgetcsv($csv)) !== false)
|
|
{
|
|
// dealer csv file has a header
|
|
if ($rownum < 1)
|
|
{
|
|
// skip header
|
|
$rownum++;
|
|
continue;
|
|
}
|
|
|
|
// sample of line in csv file
|
|
// columns are name, address, branch code
|
|
// BATPARTS Marcos Branch,"Km. 16 Marcos Hi-way corner Mahogany Street, Santolan, Pasig",ZN03576282
|
|
$dealer_name = trim(strtoupper($row[0]));
|
|
$dealer_address = trim(strtoupper($row[1]));
|
|
$dealer_branch_code = trim(strtoupper($row[2]));
|
|
|
|
// error_log('name ' . $dealer_name . ' address ' . $dealer_address . ' branch code ' . $dealer_branch_code);
|
|
error_log('Processing ' . $dealer_name);
|
|
|
|
$res = $sth->execute([
|
|
':name' => $dealer_name,
|
|
':address' => $dealer_address,
|
|
':branch_code' => $dealer_branch_code,
|
|
]);
|
|
|
|
if (!$res)
|
|
{
|
|
// log error
|
|
$err = $sth->errorInfo();
|
|
$log_message = "$dealer_name - ERROR - " . $err[2] . "\n";
|
|
}
|
|
else
|
|
{
|
|
// log successful adding of dealer
|
|
$log_message = "$dealer_name - SUCCESS - " . "\n";
|
|
}
|
|
fwrite($output_fh, $log_message);
|
|
|
|
$rownum++;
|
|
}
|
|
|
|
// close file
|
|
fclose($csv);
|
|
fclose($output_fh);
|
|
?>
|