php - 在mysql中插入来自CSV的10000行数据而不跳过任何行
问题描述
我需要通过插入查询将我的 CSV 数据插入 mysql。目前我的 CSV 有 9976 行数据。但是在运行查询后,9-10 行会在 1000 行之后随机跳过,并且很难找出跳过了哪些行。
首先,我尝试访问该文件夹,然后访问该文件并将 csv 第一行作为我的表头。然后运行查询以在 mysql 中插入数据,但它跳过了一些随机行。
$dir = "C:\Users\\".strtolower($username)."\Downloads";
$fp = opendir($dir);
$dates = array();
$latest_file = glob($dir."\\Filter_ Tempo-jql-AP*");
closedir($fp);
$filepath=$latest_file[0];
$the_big_array = [];
$tablename="aht_tracker";
$dbname="ford_resource_capacity";
$conn =mysqli_connect("localhost","root","","$dbname") or die(mysqli_connect_error());
$fields="";
$fields1="";
$fieldsinsert="";
if (($h = fopen("{$filepath}", "r")) !== FALSE)
{
if (($data = fgetcsv($h, 100000, ",")) !== FALSE)
{
$issuekey=array_search("Issue key", $data);
$hours=array_search("Hours", $data);
$username=array_search("Username", $data);
$issuetype=array_search("Issue Type", $data);
$workdescription=array_search("Work Description", $data);
$new_array=array($issuekey,$hours,$username,$issuetype,$workdescription);
$arr_count=count($new_array);
$c=0;
$fieldsinsert .='(';
foreach ($new_array as $key => $value)
{
$fieldsinsert .=($key==0) ? '' : ', ';
$fieldsinsert .="`".str_replace(" ","_",$data[$value])."`";
$fields .="`".str_replace(" ","_",$data[$value])."` varchar(250) DEFAULT NULL,";
}
$fieldsinsert .= ')';
}
while(($data = fgetcsv($h, 100000, ",")) !== FALSE)
{
$fieldsInsertvalues="";
$c=0;
foreach ($new_array as $key => $value)
{
$fieldsInsertvalues .=($key==0) ? '(' : ', ';
$fieldsInsertvalues .="'".$data[$value]."'";
}
$fieldsInsertvalues .= ')';
$sql1 = "INSERT INTO ".$tablename." ".$fieldsinsert."VALUES".$fieldsInsertvalues;
mysqli_query($conn,$sql1);
}
fclose($h);
//unlink($filepath);
}
给我看一些代码,它可以帮助我从 csv 数据中插入我的所有行,或者让我知道是否可以在 500-500 数据包中插入 csv 数据。
解决方案
https://dev.mysql.com/doc/refman/8.0/en/load-data.html
执行 MySQL 命令更有效。从 CSV 导入数据。您可以指定 Container、Separator 和其他东西。
推荐阅读
- c++ - 在 C++ 中具有模板初始化的静态结构指针
- assembly - (汇编x86实模式)数据在程序结束时被“切断”?
- c - 使用字符串方法在 C 中的 fizzbuzz 中出现错误?
- c - 虽然 C Arduino 不能循环(With 语句),但使用 MQTT
- python - AttributeError:模块“matplotlib”没有属性“coolwarm”
- node.js - 何时 NodeJS Expressjs 挂载其他应用程序或需要其他应用程序
- javascript - 在两个按钮之间切换 JavaScript
- flutter - 如何在颤振中测试本地化小部件?
- node.js - TypeScript - 无法在其他类型根中导入自我类型覆盖,TS7016
- nginx - 使用 NGINX 将子域指向同一服务器上的目录