基于函数依赖关系将csv表显示为两个表

nwo49xxi  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(285)

我需要根据csv文件的函数依赖关系从csv文件创建两个表,例如,我有一个借书表

我想把这个表分成两个表,一个表中有bookid、书名、isbn、数量、出版商、authorid、authorname,
第二个表中的借入ID、studentid、studentname、借入日期、bookid。
希望你能帮助我。
/这是我的密码/

  1. $filetype= basename($_FILES['file']['name']);
  2. $filename=$_FILES["file"]["tmp_name"];
  3. if($_FILES["file"]["size"] > 0){
  4. $file = fopen($filename, "r");
  5. if(substr($filetype, -3) == 'csv'){
  6. $csvName = time() .'_'.$_FILES['file']['name'];
  7. $target = 'csv/' . $csvName;
  8. }
  9. }
  10. $primary[] = "Borrowid";
  11. $handle = fopen($target,'r');
  12. if(($getData = fgetcsv($handle)) !== FALSE){
  13. $i=1;
  14. $PK_columns = Array();
  15. //number of columns
  16. $num = count($getData);
  17. $row=0;
  18. //start count rows
  19. $csv = Array();
  20. $rowcount = 1;
  21. $max_line_length = defined('MAX_LINE_LENGTH') ? MAX_LINE_LENGTH : 10000;
  22. $header = fgetcsv($handle, $max_line_length);
  23. $header_colcount = count($header);
  24. while (($row = fgetcsv($handle, $max_line_length)) !== FALSE) {
  25. $row_colcount = count($row);
  26. if ($row_colcount == $header_colcount) {
  27. $entry = array_combine($header, $row);
  28. $csv[] = $entry;
  29. }
  30. else {
  31. error_log("csvreader: Invalid number of columns at line " . ($rowcount + 2) . " (row " . ($rowcount + 1) . "). Expected=$header_colcount Got=$row_colcount");
  32. return null;
  33. }
  34. $rowcount++;
  35. }// end count rows
  36. if (($handle = fopen($target, "r")) !== FALSE) {
  37. while (($getData = fgetcsv($handle, 1000, ",")) !== FALSE) {
  38. for ($i = 0; $i < $num; $i++) { // Loop over the data using $i as index pointer\
  39. if (in_array($getData[$i], $primary)){
  40. $PK_columns[] = $i; // Fetch no of PK
  41. }
  42. }
  43. }
  44. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题