2013-04-22 1 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와 현재 값이 잘못 표시되어 하나의 행만 나타날 수 있다는 것입니다.

미리 감사드립니다. 이 같은

+0

당신이 발생한 어떤 문제를 명확히 할 것인가? 나는 네가 원하는 것을 말한 곳을 보지만, 지금 어떤 부분이 실패하고 있는지 이해하지 못한다. –

+0

조지 감사합니다. 내가 얻는 문제는 ID와 Current가 잘못된 값을 표시하고 있으며 한 행만 나타날 수 있다는 것입니다. 사용중인 텍스트 문서에는 수천 개의 행이 있습니다. : -S –

답변

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 정말 고마워요! 내가 무언가를 보는 데 너무 많은 시간을 할애하면 놀라운 것들! 나는 당신에게 은유 맥주를 줘야합니다 ... 평판 포인트를 줄 수 있습니까? –

+2

@ user2300686 무덤을 보상하는 좋은 방법은 그의 대답을 upvote하고 동의로 표시하는 것입니다. 그는이 두 가지 행동에 대해 총 25 개의 평판 포인트를 받게됩니다. –