Files
thetool/scripts/import/gst/import-gst.php
2025-02-27 18:13:00 +01:00

129 lines
3.7 KiB
PHP

#!/usr/bin/php
<?php
//require 'vendor/autoload.php';
require("../../../config/config.php");
define('FRONKDB_SQLDEBUG', false);
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
require_once(LIBDIR . "/mvcfronk/mfRouter/mfRouter.php");
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseModel.php");
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseController.php");
$me = new \User(TT_RIMO_IMPORT_USER_ID);
define("INTERNAL_USER_ID", $me->id);
define("INTERNAL_USER_USERNAME", $me->username);
define("MFBASE_BYPASS_LOGIN", true);
$folder = __DIR__."/input/";
//$filename = __DIR__."/input/GST60001_V2.csv";
$now = date("U");
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$log = mfLoghandler::singleton();
$start = date("U");
$last_ts = $start;
$input_dir = opendir($folder);
while($file = readdir($input_dir)) {
if(!preg_match('/\.csv$/', $file)) {
echo "Skipping $file\n";
continue;
}
$filename = $folder.$file;
$input = fopen($filename, "r");
$bom = "\xef\xbb\xbf";
if(fgets($input, 4) !== $bom) {
// BOM not found - rewind pointer to start of file.
rewind($input);
}
$headers = [];
$import_date = false;
$c = 0;
$i = 0;
while($csv = fgetcsv($input, 0, ";")) {
$i++;
if($i == 1) {
foreach($csv as $key => $name) {
$headers[$name] = $key;
$match = [];
// EZ #01.10.2024#
if(preg_match('/EZ #(\d\d)\.(\d\d)\.(\d\d\d\d)/', $name, $match)) {
$d = $match[1];
$m = $match[2];
$y = $match[3];
if(!$d || !$m || !$y) {
die("Kein Datum in EZ Header gefunden ($d, $m, $y)\n");
}
$import_date = "$y-$m-$d";
$headers["EZ"] = $key;
}
}
continue;
}
if(!$import_date) {
die("Kein Datum in EZ Header gefunden ($import_date)\n");
}
if(!trim($csv[1])) {
continue;
}
$kgnr = trim($csv[$headers["KG-NR"]]);
$gstnr = trim($csv[$headers["GST-NR"]]);
$g = trim($csv[$headers["G"]]);
$ba = trim($csv[$headers["BA"]]);
$nu = trim($csv[$headers["NU"]]);
$tind = trim($csv[$headers["TIND"]]);
$ind = trim($csv[$headers["IND"]]);
$flaeche = trim($csv[$headers["FLAECHE"]]);
$emz = trim($csv[$headers["EMZ"]]);
$gfn = trim($csv[$headers["GFN"]]);
$gft = trim($csv[$headers["GFT"]]);
$kgez = trim($csv[$headers["KG-EZ"]]);
$ez = trim($csv[$headers["EZ"]]);
//echo "kgnr: '$kgnr' gstnr: '$gstnr' g: '$g' ba: '$ba' nu: '$nu' tind: '$tind' ind: '$ind' flaeche: '$flaeche' emz: '$emz' gfn: '$gfn' gft: '$gft' kgez '$kgez' ez: '$ez'\n";
$sql = "INSERT INTO `Gwrgst` (`kgnr`,`gstnr`,`g`,`ba`,`nu`,`tind`,`ind`,`flaeche`,`emz`,`gfn`,`gft`,`kgez`,`ez`,`create`,`edit`) VALUES";
$insert_values[] = "($kgnr,'$gstnr','$g','$ba','$nu','$tind','$ind','$flaeche','$emz','$gfn','$gft','$kgez','$ez',$now,$now)";
$c++;
if($c % 100000 == 0) {
runQuery($sql.implode(",", $insert_values), $c);
$insert_values = [];
}
}
if(count($insert_values)) {
runQuery($sql . implode(",", $insert_values), $c);
$insert_values = [];
$c = 0;
}
echo "$filename: $i lines imported\n";
}
function runQuery($sql, $c) {
global $db;
global $last_ts;
mysqli_query($db->link, $sql);
$now = date("U");
//echo "$c: ".date("Y-m-d H:i:s")." - delta ".($now - $last_ts)."\n";
$last_ts = $now;
}