| 
	
 | 
 Posted by nsh on 11/22/05 16:43 
mailing.database.mysql, comp.lang.php 
subject: does "LOAD DATA" EVER work?!? I've tried EVERYTHING! 
 
version info: 
my isp is running my web page on a linux box with php ver. 4.4.1 
according to phpinfo, the "mysql api client is ver. 4.0.25" - I have no 
idea how this relates, if at all, to the mysql engine's version. 
 
 
background: 
I have tried literally everything I can think of, and I can NOT get 
load data infile to work under php AT ALL!!! 
 
I have scoured all the newsgroups, and found countless plea's for help 
on this subject. NONE of them seem to adaquately answer all my 
questions; most suggest trying stuff I've long since tried and failed. 
 
I have actually read the freaking mysql manual, and from the 
description, it SOUNDS like I SHOULD be able to transfer a csv file 
from my window's pc, to the web server's mysql database, and import it 
into a table in 1 single command. I do realize this is a security risk, 
and therefore can't be done this way. Someone should re-write the 
manual's description of the load data command. The manual refer's to 
"client software" - but it never explains what the <blank> it is - so 
therefore I assume it to be my web browser :)  - afterall, that is the 
client I'm using! (yes, there is a reference to mysql client software, 
but I can't put that on my users' pc's, nor do I or should I [feel] I 
should have to do this). 
 
The csv file is exported from ms access. I manually ftp the file to the 
web server. 
Here's the command I've been trying hundreds of variations on: 
 
-- 
LOAD DATA CONCURRENT LOCAL INFILE '/full_server_path/myfile.csv' 
REPLACE INTO TABLE `intemp` FIELDS TERMINATED BY ',' OPTIONALLY 
ENCLOSED BY '|' LINES TERMINATED BY '\n'; 
-- 
 
(Some fields use double quotes within the field, so I closed the fields 
in the pipe symbol. My test file doesn't have any quotes, and I've 
proven that the pipe works.) 
The full_server_path is determined with php's "getcwd" function. 
 
 
MY questions: 
1) Is there SOME way that this can be done as I interpreted the mysql 
manual? Is there a way to upload, and import a file from my pc to the 
web server - WITHOUT the use of any special software? (I have users 
that will update the database, and they will have nothing more than ms 
access, and IE installed). 
 
2) I'm ASSUMING the answer to #1 is No. So obviously I must get the 
file to the server somehow, then load data. I've done exactly this in 
my testing. after it's ftp'd, there's NO WAY I can get mysql to import 
the darn file (thru php). 
** - If I use phpmyadmin, and insert the above command into a sql 
window & execute it - IT WORKS PERFECTLY!! 
   - If I use the EXACT same command in php (see sample), I GET 
NOTHING! I get NO error messages, and I NEVER get a successful import. 
SAMPLE: 
__ 
$qry="LOAD DATA CONCURRENT LOCAL INFILE '/full_server_path/myfile.csv' 
REPLACE "; 
$qry.="INTO TABLE `intemp` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED 
BY '|' LINES TERMINATED BY '\n'"; 
$qry.="LINES TERMINATED BY '\\n';"; 
$rslt=mysql_query($qry,$db) or die(mysql_error()); 
-- 
 
so I guess the question for #2 is - what am I doing wrong? 
 
3) Considering I've spent COUNTLESS hours trying to solve this - on 
MULTIPLE occasions; 
I'm lead to ask, does "load data" REALLY even work, and why does it 
seem so hard to find working examples? 
 
oh - by the way - I've tried relative path's, absolute paths, using 
"LOCAL", not using it; and dozens of other permutations. 
 
I'm hoping someone can finally shed full light on the issues with LOAD 
DATA... 
TIA
 
  
Navigation:
[Reply to this message] 
 |