Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από valantis315 » 23 Απρ 2009 16:53

Καλησπέρα,
θα ήθελα αν γνωρίζει κάποιος να μου απαντήσει πώς μπορώ να κάνω εισαγωγή στην βάση απο ένα αρχείο κειμένου, δηλαδή, θέλω να μπορεί κάποιος να κάνει upload ένα αρχείο που η κάθε σειρά θα έχει μία εγγραφή και τα πεδία θα είναι χωρισμένα με το κενό " ", παράδειγμα:
ΜΙΧΑΛΗΣ ΜΙΧΑΛΑΚΗΣ 2 3 5
ΧΡΗΣΤΟΣ ΧΡΗΣΤΟΥ 3 55 2
Το Μιχάλης να πάει να καταχωρήτε στο πίνακα στο πεδίο όνομα f_name το Μιχαλάκης στο l_name κτλ και η κάθε σειρά να είναι μία εγγραφή.

Όποιος έχει καμια ιδέα ας την πεί.


Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από Apostolis_38 » 24 Απρ 2009 10:49

Θέλει λίγο προσοχή όμως με το character set της βάσης γιατί μπορεί να προκύψει θέμα με τους Ελληνικούς χαρακτήρες.
Αν θυμάμαι καλά, με την latin2 ,για παράδειγμα, δεν εμφανίζονται όλοι οι χαρακτήρες σωστά.

valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από valantis315 » 24 Απρ 2009 15:38

Apostolis_38 Είναι η επομενη μου ερώτηση, το έκτελώ και τα Ονόματα στα Αγγλικά τα περνάει κανονικά στην βάση ενώ τα Ελληνικά δεν τα εμφανίζει καθόλου, η κωδικοποίηση της βάσης είναι UTF-8 καμία ιδέα;

valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από valantis315 » 24 Απρ 2009 16:36

Ολα ok με αλλαγή της κωδικοποίησης του αρχείου απο ANSI ΣΕ UTF8 έπαιξε κανονικά, σας ευχαριστώ πολύ.

valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από valantis315 » 26 Απρ 2009 19:00

Φίλε korgr γνωρίζεις εάν η εντολή LOAD DATA INFILE παίζει μόνο όταν το αρχείο και το site είναι τοπικά; Όταν έχω το site τοπικά παίζει κανονικά η εντολή όταν το αναιβάζω στον server η sql μου πετάει σφάλμα Access denied for user 'trapeza_usr'@'%' (using password: YES), σε παρακαλώ εάν γνωρίζεις κάτι απάντησε μου.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από korgr » 26 Απρ 2009 19:14

φυσικα και παιζει και στον server. Καποιο λαθος θα εχεις κανει και στα βγαζει αυτα. Δοκιμασε και αλλο query στη βαση σου για να βεβαιωθεις πως τα connection details σου ειναι σωστα...

valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από valantis315 » 26 Απρ 2009 19:26

korgr εκεί κόλλησα μόλις κάνω άλλο query παίζει κανονικά. Μόλις βάζω την LOAD DATA IN FILE δημιουργεί το πρόβλημα μήπως έχω κάνει κάτι λάθος στην σύνταξη; ρίξε μία ματια σε παρακαλώ.

Κώδικας: Επιλογή όλων

<?php include&#40;'menu.htm'&#41;; ?> 
<?php
include&#40;"connect.php"&#41;; 
$sql = "SET NAMES 'utf8' ";
mysql_query&#40;$sql&#41;;
$source_file = "import.txt";
$sql = "LOAD DATA INFILE \"$source_file\"
		INTO TABLE `teachers2` 
		FIELDS TERMINATED BY ' ' 
		LINES TERMINATED BY '\r\n'
		&#40;f_name, l_name, id_user, id_teacher_level, permanent&#41;
		";
if &#40;!mysql_query&#40;$sql,$con&#41;&#41; 
&#123;    
die&#40;'Προέκυψε το ακόλουθο σφάλμα&#58; ' . mysql_error&#40;&#41;&#41;;

&#125; 
echo "Η μαζική εισαγωγή έγινε με επιτυχία";
?>
<?php include&#40;'footer.htm'&#41;; ?> 
Το άλλο πρόβλημα μου είναι πως επιδή το θέλω για compoment του joomla το έχω διαμορφώσει ώς εξής:

Κώδικας: Επιλογή όλων

 if &#40;isset&#40;$_POST&#91;'submit_teacherfile'&#93;&#41;&#41;
		&#123;
			if &#40;$_FILES&#91;"file"&#93;&#91;"type"&#93; == "text/plain"&#41;
			&#123;
  				if &#40;$_FILES&#91;"file"&#93;&#91;"error"&#93; > 0&#41;
    			&#123;
    			echo "Return Code&#58; " . $_FILES&#91;"file"&#93;&#91;"error"&#93; . "<br />";
    			&#125;
  					else
    				&#123;
						$namefile = "import.txt";
	  					move_uploaded_file&#40;$_FILES&#91;"file"&#93;&#91;"tmp_name"&#93;,
      					$mainframe->getCfg&#40;'absolute_path'&#41;. "/components/com_vsbank/files/" . $namefile&#41;;
						$source_file = $mainframe->getCfg&#40;'absolute_path'&#41;. "/components/com_vsbank/files/import.txt";
						$query = "LOAD DATA INFILE '/components/com_vsbank/files/import.txt'
                  		INTO TABLE `#__vsb_teachers`
                  		FIELDS TERMINATED BY ' '
                  		LINES TERMINATED BY '\r\n'
                  		&#40;f_name, l_name, id_user, id_teacher_level, permanent&#41;
                  		";
						$database->setQuery&#40; $query &#41;;
           				$database->query&#40;&#41;;
						echo mysql_error&#40;&#41;;
						echo "Η εισαγωγή των δεδομένων πραγματοποιήθηκε";
      				&#125;
			&#125;
			else
  			&#123;
  			echo "Λάθος τύπος αρχείου, δεκτοί τύποι αρχείων είναι&#58; txt";
  			&#125;

		&#125;
	&#125;
Το θέμα είναι ότι και εδώ μου εμφανίζει το ίδιο σφάλμα στο mysql_error(), ενώ η σύνδεση με την βάση γίνετε αυτόματα και δεν έχω πουθενά αλλου πρόβλημα σε όλο το project με τα query. Επίσεις, το αρχείο όταν το τρέχω τοπικά και δηλώσω το source /htdocs/.../import.txt μου λέει πως η sql δεν μπορεί να βρεί το αρχειο στην διαδρομή /htdocs/.../import.txt ενώ όταν το δηλώνω C:/xampp/htdocs/.../import.txt κάνει την εισαγωγή κανονικά. Πραγματικά δεν μπορώ να βγάλω άκρη και είναι κρίμα γιατί τοπικά είναι super για την δουλειά που την θέλω.

valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από valantis315 » 26 Απρ 2009 20:01

με μία αναζήτηση για "load data infile Access denied for user (using password: YES)" θα δείς πως και άλλοι έχουν το ίδιο πρόβλημα αλλα έχω δοκιμάσει τα πάντα χωρίς αποτέλεσμα, ίσως να φταίνε τα όχι και τόσο καλά Αγγλικά μου, άν βρείς κάτι παραπάνω πές μου έχω δοκιμάσει και το LOAD DATA LOCAL INFILE αλλα το μήνυμα που πέρνω είναι File '\htdocs\bank\admin\import.txt' not found (Errcode: 2)

valantis315
Δημοσιεύσεις: 37
Εγγραφή: 25 Ιουν 2008 20:30

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από valantis315 » 26 Απρ 2009 20:05

Όταν τρέχω με LOCAL στο Joomla μου επιστρέφει The used command is not allowed with this MySQL version

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Εισαγωγή δεδομένων στην βάση μέσω txt αρχείου

Δημοσίευση από Apostolis_38 » 26 Απρ 2009 20:51

Αναφορικά με το Joomla, δοκίμασε μήπως παίξει με το $_SERVER["DOCUMENT_ROOT"]\path για το txt.

Πάντως κατά τη γνώμη μου τζάμπα παιδεύεσαι. Φτιάξε ένα insert into table values, ανέβασέ το στον server, τρέξτο κανονικά απο την address bar να ξεμπερδεύεις. Πρόσεχε μόνο πάλι να είναι utf8 η σελίδα.

Σχετικά με το access denied, μήπως δεν έχεις τα κατάλληλα δικαιώματα;

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες