Centar za edukaciju-BiH



#1 12.08.2020 11:59
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:import txt file u mysql bazu - rad sa datotekama - excel u mysql
U excelu imamo podatke o zaposlenicima:

Te podatke zelimo izvesti u txt fajl koji ce imati ime: zaposlenici_danasnjiDatum.txt

evo kod koji stavljamo u excel:
PreuzmiIzvorni kôd (Text):
  1. Sub list2txt()
  2.    
  3.     Dim zadnjaKolona As Long
  4.     Dim zadnjiRed As Long
  5.    
  6.     zadnjaKolona = LastCol(ActiveSheet)
  7.     zadnjiRed = LastRow(ActiveSheet)
  8.    
  9.     Dim folderPath As String
  10.     folderPath = Application.ActiveWorkbook.Path
  11.    
  12.     Dim imeFile As String
  13.     Dim strDatum As String
  14.    
  15.     strDatum = Format(Date, "dd_mm_yyyy")
  16.     imeFile = folderPath & "\" & "zaposlenici_" & strDatum & ".txt"
  17.    
  18.     'obrisi datoteku ako postoji sa tim imenom
  19.     'ne radi na stiku
  20.     'If FileExists(imeFile) Then
  21.     '   SetAttr imeFile, vbNormal ' ako postoji readonly atribut (samo citanje) makni ga
  22.     '   Kill imeFile ' obrisi file
  23.     'End If
  24.    
  25.     Dim ff As Integer
  26.     ff = FreeFile()
  27.    
  28.     Dim celija1 As String 'Id       kolona=1
  29.     Dim celija2 As String 'ime i prezime     kolona=2
  30.     Dim celija3 As String 'prezime  kolona=3
  31.     Dim celija4 As String 'telefon  kolona=4
  32.     Dim celija5 As String 'adresa   kolona=5
  33.     Dim celija6 As String 'dat.rod. kolona=6
  34.     Dim celija7 As String 'koef.obr kolona=7
  35.     Dim celija8 As String 'kat.r.m. kolona=11
  36.     Dim celija9 As String 'o.d.     kolona=9
  37.     Dim celija10 As String 'o.d.dod kolona=10
  38.     Dim celija11 As String 'tje.st  kolona=12
  39.    
  40.     Dim strListBox As String
  41.    
  42.     Open imeFile For Output As #ff
  43.         For red = 2 To zadnjiRed
  44.             celija1 = Cells(red, 1).Value 'id
  45.             celija2 = Cells(red, 2).Value & " " & Cells(red, 3).Value 'ime
  46.             celija3 = Cells(red, 4).Value 'telefon
  47.             celija4 = Cells(red, 5).Value 'adresa
  48.             celija5 = Format(Cells(red, 6).Value, "yyyy-mm-dd") 'datum rodenja
  49.             celija6 = Cells(red, 7).Value 'koeficijent obrazovanja
  50.             celija7 = Cells(red, 8).Value 'kategorija radnog mjesta
  51.             celija8 = Cells(red, 9).Value 'osobni dohodak
  52.             celija9 = Cells(red, 10).Value 'osobni dohodak dodatak
  53.             celija10 = Cells(red, 11).Value 'tjedno sati
  54.            
  55.             Write #ff, celija1, celija2, celija3, celija4, celija5, celija6, celija7, celija8, celija9, celija10
  56.  
  57.         Next red
  58.     Close #ff
  59. End Sub
  60.  
  61.     'DALI DATOTEKA POSTOJI
  62. Public Function FileExists(ByVal FileToTest As String) As Boolean
  63.    FileExists = (Dir(FileToTest) <> "")
  64. End Function
  65.  
  66. 'PRONALAZI ZADNJI REED
  67. Public Function LastRow(sh As Worksheet)
  68.     On Error Resume Next
  69.     LastRow = sh.Cells.Find(What:="*", _
  70.                             After:=sh.Range("A1"), _
  71.                             LookAt:=xlPart, _
  72.                             LookIn:=xlFormulas, _
  73.                             SearchOrder:=xlByRows, _
  74.                             SearchDirection:=xlPrevious, _
  75.                             MatchCase:=False).Row
  76.     On Error GoTo 0
  77. End Function
  78.  
  79. 'PRONALAZI ZADNJU KOLONU
  80. Public Function LastCol(sh As Worksheet)
  81.     On Error Resume Next
  82.     LastCol = sh.Cells.Find(What:="*", _
  83.                             After:=sh.Range("A1"), _
  84.                             LookAt:=xlPart, _
  85.                             LookIn:=xlFormulas, _
  86.                             SearchOrder:=xlByColumns, _
  87.                             SearchDirection:=xlPrevious, _
  88.                             MatchCase:=False).Column
  89.     On Error GoTo 0
  90. End Function


datoteku moramo ucitati u notepad i odabrati format-petvori u UTF-8 bez BOOM-a,
a zatim ju takvu snimiti

Prilozi:
Informacije o tipu datoteke za:txt  zaposlenici_07_08_2020.txt
Preuzimanja:197
Velicina datoteke:46.64 KB


zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 12.08.2020 12:23 od strane Avko. ↑  ↓

#2 12.08.2020 12:02
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: import txt file u mysql bazu - rad sa datotekama
sada cemo napraviti bazu na lokalnom serveru testbaza sa tablom zaposlenici:

evo sql:

PreuzmiIzvorni kôd (Text):
  1. -- phpMyAdmin SQL Dump
  2. -- version 4.5.4.1
  3. -- http://www.phpmyadmin.net
  4. --
  5. -- Host: localhost
  6. -- Generation Time: Aug 12, 2020 at 11:01 AM
  7. -- Server version: 5.7.11
  8. -- PHP Version: 5.6.18
  9.  
  10. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  11. SET time_zone = "+00:00";
  12.  
  13.  
  14. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  15. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  16. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  17. /*!40101 SET NAMES utf8mb4 */;
  18.  
  19. --
  20. -- Database: `testbaza`
  21. --
  22.  
  23. -- --------------------------------------------------------
  24.  
  25. --
  26. -- Table structure for table `zaposlenici`
  27. --
  28.  
  29. CREATE TABLE `zaposlenici` (
  30.   `id` int(11) NOT NULL,
  31.   `ime` text NOT NULL,
  32.   `telefon` text NOT NULL,
  33.   `adresa` text NOT NULL,
  34.   `datum_rodenja` date NOT NULL,
  35.   `koef_obrazovanja` int(11) NOT NULL,
  36.   `kategorija_r_mjesta` int(11) NOT NULL,
  37.   `osobni_dohodak` int(11) NOT NULL,
  38.   `od_dodaci` int(11) NOT NULL,
  39.   `sati_tjedno` int(11) NOT NULL
  40. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  41.  
  42. --
  43. -- Indexes for dumped tables
  44. --
  45.  
  46. --
  47. -- Indexes for table `zaposlenici`
  48. --
  49. ALTER TABLE `zaposlenici`
  50.   ADD PRIMARY KEY (`id`);
  51.  
  52. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  53. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  54. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

nakon sto smo napravili bazu i tabelu potrebno je napraviti i html,php kod koji ce uvoziti podatke iz txt fajla u mysql bazu

Prilozi:
Informacije o tipu datoteke za:rar  testbaza.rar
Preuzimanja:168
Velicina datoteke:667 Bajt


zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 12.08.2020 12:04 od strane Avko. ↑  ↓

#3 12.08.2020 12:17
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: import txt file u mysql bazu - rad sa datotekama
cijeli html,php kod je prikvacen a pogledat cemo samo dio koda koji radi uvoz:

u index.php imamo tipku

<a href="import.php" class="btn btn-success pull-right">UVEZI DATOTEKU</a>

pritiskom na tipku izvrsi se import.php kod u kojem se

izvrse neke radnje bitne za daljni rad koda i neke informativne radnje koje nam pokazu na ekranu neke vrijednosti:

PreuzmiIzvorni kôd (Text):
  1. // Ukljuci konfiguracijsku datoteku
  2. require_once "config.php";
  3.  
  4. // Definirajte varijable i inicijalizirajte ih s praznim vrijednostima
  5. $ime = $telefon = $adresa = $datum_rodenja = $koef_obrazovanja = $kategorija_r_mjesta = $osobni_dohodak = $od_dodaci = $sati_tjedno = "";
  6. $ime_err = $telefon_err = $adresa_err = $datum_rodenja_err = $koef_obrazovanja_err = $kategorija_r_mjesta_err = $osobni_dohodak_err = $od_dodaci_err = $sati_tjedno_err = "";
  7.  
  8. // Obrada podataka obrasca prilikom predaje obrasca
  9. if($_SERVER["REQUEST_METHOD"] == "POST"){
  10.        
  11.         if(isset($_FILES['file']))
  12.         {
  13.                 // detalji o prenesenoj datoteci
  14.                 $fileTmpPath = $_FILES['file']['tmp_name'];
  15.                 $fileName = $_FILES['file']['name'];
  16.                 $fileSize = $_FILES['file']['size'];
  17.                 $fileType = $_FILES['file']['type'];
  18.                
  19.                
  20.                 echo "fileTmpPath: ".$fileTmpPath."</br>";
  21.                 echo "fileName: ".$fileName."</br>";
  22.                 echo "sileSize: ".$fileSize."</br>";
  23.                 echo "fileType: ".$fileType."</br>";
  24.                
  25.         }


ako velicina ucitanog fajla nije nula

PreuzmiIzvorni kôd (Text):
  1. $filename=$_FILES["file"]["tmp_name"];
  2. echo $filename."</br>";
  3.                
  4. if($_FILES["file"]["size"] > 0)
  5. {
  6.   echo $filename."</br>";


ucitamo fajli i podatke ubacimo u bazu

PreuzmiIzvorni kôd (Text):
  1. $file = $_FILES["file"]["tmp_name"];
  2. $file_open = fopen($file,"r");
  3. while(($csv = fgetcsv($file_open, 1000, ",")) !== false)
  4. {
  5. $id="";
  6. if (isset($csv[0])){$id = mysqli_real_escape_string($con, $csv[0]);}
  7. $ime="";
  8. if (isset($csv[1])){$ime = mysqli_real_escape_string($con, $csv[1]);}
  9. $telefon="";
  10. if (isset($csv[2])){$telefon = mysqli_real_escape_string($con, $csv[2]);}
  11. $adresa="";
  12. if (isset($csv[3])){$adresa = mysqli_real_escape_string($con, $csv[3]);}
  13. $datum_rodenja="";
  14. if (isset($csv[4])){$datum_rodenja = mysqli_real_escape_string($con, $csv[4]);}
  15. $koef_obrazovanja="";
  16. if (isset($csv[5])){$koef_obrazovanja = mysqli_real_escape_string($con, $csv[5]);}
  17. $kategorija_r_mjesta="";
  18. if (isset($csv[6])){$kategorija_r_mjesta = mysqli_real_escape_string($con, $csv[6]);}
  19. $osobni_dohodak="";
  20. if (isset($csv[7])){$osobni_dohodak = mysqli_real_escape_string($con, $csv[7]);}
  21. $od_dodaci="";
  22. if (isset($csv[8])){$od_dodaci = mysqli_real_escape_string($con, $csv[8]);}
  23. $sati_tjedno="";
  24. if (isset($csv[9])){$sati_tjedno = mysqli_real_escape_string($con, $csv[9]);}
  25.                                
  26. $sql="INSERT INTO zaposlenici(id, ime, telefon, adresa, datum_rodenja, koef_obrazovanja,
  27.                                              kategorija_r_mjesta, osobni_dohodak, od_dodaci, sati_tjedno)
  28.         VALUES('".$id."', '".$ime."', '".$telefon."', '".$adresa."', '".$datum_rodenja."', '".$koef_obrazovanja."','
  29.                     ".$kategorija_r_mjesta."', '".$osobni_dohodak."', '".$od_dodaci."', '".$sati_tjedno."')
  30. ON DUPLICATE KEY UPDATE
  31. id='".$id."',
  32. ime='".$ime."',
  33. telefon='".$telefon."',
  34. adresa='".$adresa."',
  35. datum_rodenja='".$datum_rodenja."',
  36. koef_obrazovanja='".$koef_obrazovanja."',
  37. kategorija_r_mjesta='".$kategorija_r_mjesta."',
  38. osobni_dohodak='".$osobni_dohodak."',
  39. od_dodaci='".$od_dodaci."',
  40. sati_tjedno='".$sati_tjedno."'
  41. ";
  42.                                
  43. mysqli_query($con,$sql);
  44.                                
  45. echo $csv[0]." ".$csv[1]." ".$csv[2]." ".$csv[3]." ".$csv[4]." ".$csv[5]." ".$csv[6]." ".$csv[7]." ".$csv[8]."
  46.         ".$csv[9]."</br>";
  47. echo $id.", ".$ime.", ".$telefon.", ".$adresa.", ".$datum_rodenja.", ".$koef_obrazovanja.",
  48.         ".$kategorija_r_mjesta.", ".$osobni_dohodak.",".$od_dodaci.",".$sati_tjedno;
  49. if (!empty($sql)) { echo " - upit izvrsen"."</br>"; }
  50. }

Upotrijebili smo sql naredbu:

INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

ona ce zamijeniti postojece podatke sa novima a brza je od REPLACE INTO t1 (a,b,c) VALUES (1,2,3);

koja ide od reda do reda i sve mijenja

Prilozi:
Informacije o tipu datoteke za:rar  probaImport.rar
Preuzimanja:167
Velicina datoteke:12.41 KB


zivot je moja domovina.
Ovaj post je ureden 4 puta. Posljednja izmjena 12.08.2020 12:27 od strane Avko. ↑  ↓

#4 12.08.2020 12:21
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: import txt file u mysql bazu - rad sa datotekama
Kada pogledamo u bazu mozda ce nas zbuniti to sto tamo nevidimo nasa slova:



no to nas netreba smetati jer nije problem. Ispisom u html stranici ona ce se ispisati ispravno:


zivot je moja domovina.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 12: 28 am.