Ik ben bezig met een script dat een tst bestand overzet naar een mysql database. Het tekst bestand is een copy paste uit een excel sheet. Ik kom nu alleen op het probleem dat er vanuit een bepaald tekstbestand er maat 1415 records ingevoegd worden en dat de INSERT er me stopt ik krijg dan bij affected rows een -1. eerst dacht ik eraan dat dit misschien een of andere vage beperking was maar toen ik met een ander tekst bestand testte werden alle 2530 records ingevoegd. Ik heb het gedeelte in het tekstbestand opgezoch waar het fout gaat. Ik zie alleen niet waarom omdat het foutgaat. Ik ben opzoek gegaan naar de waarde van het 1415record in het tekstbestand en ben 1415, 1416, 1417 gaan vervangen om te kijken of het dan wel werkte maar zonder succes.
185 355023000354715 185 355023001148595 185 355023000667603 185 355023000357320 185 355023000357460 185 355023000372022 185 355023000358435[
De 185's worden eriut gefilterd. De code die ik gebruik om van .txt naar mysql te gaan is de volgende:
voor de volledigheid hier is de sql statement: http://paragonxls.xs4all.nl/php/evolve/insert.php
185 355023000354715 185 355023001148595 185 355023000667603 185 355023000357320 185 355023000357460 185 355023000372022 185 355023000358435[
De 185's worden eriut gefilterd. De code die ik gebruik om van .txt naar mysql te gaan is de volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| <?php include 'db/connect.php'; $rows= file ( 'test.txt' ); $one = 1; $strSQL = "INSERT INTO emei VALUES"; $strSQL_ADD = ""; foreach ( $rows as $row ) { //echo $row."<br />"; if (preg_match('/\d{2}\.\d{2}\.\d{2}/', $row, $matches)) { $date = $matches[0]; } if (preg_match('/\b\w{7,10}\b/', $row, $matches)) { $serial = $matches[0]; } if (preg_match_all('/PALLET\s\d{1,2}/', $row, $matches)) { for ($x = 0; $x < sizeof($matches[0]); $x++) { //print $matches[0][$x]."<br />"; } //print "<br />"; } if (preg_match_all('/\d{15}/', $row, $matches)) { for ($x = 0; $x < sizeof($matches[0]); $x++) { //print $matches[0][$x]."\t"; $y = $x + 1; $strSQL_ADD = $strSQL_ADD."('".$matches[0][$x]."','".$date."','".$serial."','".$y."'), "; } //print "<br />"; } //$strSQL = $strSQL.$strSQL_ADD; } $strSQL_ADD = rtrim($strSQL_ADD, ", "); $strSQL = $strSQL.$strSQL_ADD; print "<p style=\"font-family:verdana;font-size:11px;\">".$strSQL."</p>"; $link = opendb(0); mysql_query ( $strSQL ); echo mysql_affected_rows (), " records inserted"; ?> |
voor de volledigheid hier is de sql statement: http://paragonxls.xs4all.nl/php/evolve/insert.php
[ Voor 64% gewijzigd door paragon op 18-03-2005 14:00 ]