2013-04-22 100 views
0

我碰到一个问题,我似乎无法克服它。我使用LOAD LOCAL DATA INFILE从文本文件中获取信息(两列29.12 23.42,例如以空格分隔)。最初这只与MySQL中的一列有关,但是我必须添加一个ID AUTO INCREMENT,这样我才能使用最新的条目,另外我想现在将另一列存储在我的数据库中。这里是我的代码,它可能是很明显的,但我似乎无法找到它:MySQL“LOAD LOCAL DATA INFILE”

<?PHP 
$username = "root"; 
$password = ""; 
$hostname = "localhost"; 
$table = "Received_Data"; 

// Connect to Database and Table 

$dbhandle = mysql_connect($hostname, $username, $password) 
    or die("Unable to connect to MySQL"); 
echo "Connected to MySQL<br>"; 

$selectdatabase = mysql_select_db("IWEMSData",$dbhandle) 
    or die("Could not select IWEMSData"); 
echo "Connected to IWEMSData<br>"; 

// Clear Current Table and ReCreate 

$dt = /*"UPDATE Received_Data SET PotVal = ''";*/ "DROP TABLE Received_Data"; 
mysql_query($dt); 

$ctb = "CREATE TABLE Received_Data 
(
Current DECIMAL(30,2) NOT NULL, 
PotVal DECIMAL(30,2) NOT NULL, 

ID BIGINT NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(ID,PotVal,Current) 
)"; 

mysql_query($ctb, $dbhandle); 

echo "Received_Data Table has been created"; 

// Text File to read in 

$Textfile = 'IWEMSData.txt'; 

mysql_query(' 

LOAD DATA LOCAL INFILE "IWEMSData.txt" 
REPLACE INTO TABLE Received_Data 
FIELDS TERMINATED BY "" 
LINES TERMINATED BY "\\r\\n 
(PotVal, Current) 
";') 

or die('Error Loading Data File.<br>' . mysql_error()); 

// Close Database connection when complete 

mysql_close($dbhandle); 
?> 

所以我想是第1列是ID,其将在每个条目自动递增。第二行是PotVal,第三行是Current。然后我只想存储在第二和第三列。

我得到的问题是ID和Current显示不正确的值,我似乎只能得到一行。

在此先感谢!

+0

你会澄清你遇到什么问题?我看到你说你想说什么,但不明白哪一部分现在失败。 – 2013-04-22 15:08:21

+0

乔治谢谢你的回应。我得到的问题是ID和Current显示不正确的值,我似乎只能得到一行。正在使用的文本文件有数千行。 :-S – 2013-04-22 15:09:51

回答

4
mysql_query(' 
LOAD DATA LOCAL INFILE "IWEMSData.txt" 
REPLACE INTO TABLE Received_Data 
FIELDS TERMINATED BY "" /*<- terminated by nothing? Shouldn't there be a space in it?*/ 
LINES TERMINATED BY "\\r\\n /*<- the closing " is missing*/ 
(PotVal, Current) 
";') /*<- ah, here's the missing " What does it do here?*/ 

写这样的:

mysql_query(' 
LOAD DATA LOCAL INFILE "IWEMSData.txt" 
REPLACE INTO TABLE Received_Data 
FIELDS TERMINATED BY " " 
LINES TERMINATED BY "\\r\\n" 
(PotVal, Current) 
;') 
+0

tombom非常感谢你!当我花太多时间看东西时,它令人惊讶的是我想念的东西!我欠你一个隐喻啤酒......我可以给你声望点吗? – 2013-04-22 18:04:06

+2

@ user2300686奖励墓碑的好方法是提出答案并将其标记为已接受。他将为这两项行动共获得25点声望点。 – 2013-04-22 21:45:58