将数据从file.txt传输到数据库中的表时出错

时间:2015-05-02 08:32:45

标签: php mysql

我想将数据从文本文件:file.txt传输到数据库中的表。

代码:

<?php
$host="mysq44.000webhost.com"; // Host name
$user="a203563_user"; // Mysql username
$pass="123omr"; // Mysql password
$db_name="a2031563_global"; // Database name
$tbl_name="table"; // Table name
$file = "file.txt";

$sql=mysql_connect("$host", "$user", "$pass");
if (!$sql) {
    die("Could not connect: " . mysql_error());
}else{
mysql_select_db("$db_name");
$re="LOAD DATA INFILE '$file' INTO TABLE $tbl_name FIELDS TERMINATED BY ',')";
$result = mysql_query("$re");
if (!$result) {
    die("Could not load. " . mysql_error());
}

}
?>

但是会出现这样的消息:

Could not load. You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server 
version for the right syntax to use near 'table FIELDS 
TERMINATED BY ',')' at line 1

任何人都可以给我一些解决方案或一些想法吗?

2 个答案:

答案 0 :(得分:0)

单词&#39;表&#39;在MySQL中是一个保留字,你不能调用表,&#39; table&#39;,你需要更改表的名称或在表名周围使用反引号(`)。你似乎也有结束括号,但没有开头的 - 你想要修复它以使这个工作。

万一你需要它,这里是LOAD INFILE命令的完整语法:

LOAD DATA LOCAL INFILE 'somefile.txt' INTO TABLE abc
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(col1, col2, col3);

答案 1 :(得分:0)

您的load infile语句有3个问题:

  1. table:在MySQL中是保留字,需要更改表名或包含在内(``)
  2. 删除声明末尾的额外括号
  3. 用于从MySQL拥有的MUST加载数据的CSV文件,请使用以下命令行:

     chown mysql.mysql file.txt
    

    所以一般来说,你需要制作像

    这样的负载信息语句
     $re = "LOAD DATA INFILE '$file' INTO TABLE `$tbl_name` FIELDS TERMINATED BY ','";