2013-04-22 295 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