如何在PHP中将文本文件加载到数据库?
本来$filepath
是这样如何在PHP中将文本文件加载到数据库?
$filepath=$_SERVER['DOCUMENT_ROOT']."/".SCRIPTFOLDER."somefile.txt";
$sqlquerynew = "LOAD DATA INFILE '".$filepath."' INTO TABLE mytable FIELDS TERMINATED BY ','";
mysql_query($sqlquery);
工程。它位于服务器上。
但是如果我想把somefile.txt
放在同一台服务器之外呢?如果我把它放在保管箱中,并重新使用下面的代码,它什么也不做。
$sqlquerycreate =/** Here insert DB scheme code **/
$filepath="http://example.com/somefile.txt";
$sqlquerynew = "LOAD DATA INFILE '".$filepath."' INTO TABLE mytable FIELDS TERMINATED BY ','";
mysql_query($sqlquery);
我应该怎么做呢?该文本文件包含表格的数据。
谢谢。
$data_file = file_get_contents('http://dl.dropbox.com/u/14655573/john/nyccrash.txt');
file_put_contents('C:\xampp\htdocs\import\nyccrash.txt', $data_file);
$filepath = "C:\xampp\htdocs\import\nyccrash.txt";
echo $filepath;
$sqlquery = "LOAD DATA INFILE '".$filepath."' INTO TABLE nyccrash FIELDS TERMINATED BY ',' (crash_year, accident_type, collision_type,weather_condition,light_condition,x_coordinate,y_coordinate)";
好。我现在看到这个文件。但它没有得到数据库的导入。这是XAMPP。但我最终会转向Ubuntu。这段代码有什么问题?
您可以在本地文件首次进口数据与
//read data from remote file
$data_file = file_get_contents($http_url);
// put data in a local file
$temp_file = tempnam(sys_get_temp_dir(),'TMP');
file_put_contents($temp_file,$data_file);
//now use $temp_file into the SQL query
....
//Delete temp file
unlink($temp_file);
请注意,PHP有功能来获得系统的TEMP路径,并生成一个临时文件名。
在/ tmp中你不应该有权限问题。
这将创建在哪里?谢谢。 – CppLearner 2012-04-03 13:01:56
我会用更详细的代码 – kappa 2012-04-03 13:03:05
编辑答案,现在更清楚了吗? – kappa 2012-04-03 13:10:15
首先在服务器上创建一个临时文件:
$tmpFile = tempnam('my-tmp-dir', 'TMP');
$ok = copy('http://example.com/somefile.txt', $tmpFile);
if (!$ok) exit('ERROR!');
// Then use $filepath in your SQL query
$sqlquerynew = "LOAD DATA INFILE '".$filepath."' INTO TABLE mytable FIELDS TERMINATED BY ','";
mysql_query($sqlquery);
unlink($tmpFile);
试试这个:
$file = file_get_contents("http://example.com/somefile.txt");
$filepath=$_SERVER['DOCUMENT_ROOT']."/".SCRIPTFOLDER."somefile.txt";
file_put_contents($filepath, $file);
$sqlquerycreate =/** Here insert DB scheme code **/
$sqlquerynew = "LOAD DATA INFILE '".$filepath."' INTO TABLE mytable FIELDS TERMINATED BY ','";
mysql_query($sqlquery);
希望它可以帮助..
使用PHP来下载文件到您的服务器,并使用本地路径。 – Nanne 2012-04-03 13:00:24
@Nanne有权限问题。我的原始脚本应该通过浏览/选择由用户上传脚本。由于我不是root用户,因此我无法更改文件权限...所以我试图避免直接在服务器 – CppLearner 2012-04-03 13:02:11
上工作,如果您的脚本上传文件,脚本可以更改权限。无论如何,sql不能 - 据我所知 - 读低谷http。所以你需要一个本地路径。 php _can_读低谷http,但如果example.com是你的域名,不应该是必要的。只是上传后chmod它? – Nanne 2012-04-03 13:05:56