2016-08-12 2 views
0

텍스트 파일 (3098)을 데이터베이스로 가져와야합니다. 각 파일은 다른 테이블에 있어야합니다. 내 생각은 각 파일에 대한 새 테이블을 만드는 루프를 사용하는 것입니다. PHP에서 foreach을 사용하여 모든 파일을 통과하거나 mysql 루프를 실행하고 파일의 이름을 LOAD DATA LOCAL INFILE 뒤에 넣어야합니다. 어떻게 내가 theese 테이블을 만들 수 있을지 궁금합니다 (이름에 변수를 사용할 수도 있습니다). 내 작업을 수행하는 다른 아이디어가 도움이 될 것입니다.여러 텍스트 파일을 mysql 데이터베이스의 다른 테이블로 가져 오기

+0

'LOAD DATA LOCAL INFILE'뒤에 가져올 파일의 이름을 입력하십시오. 어떤 다른 이름을 넣을까요 ?? :-) 또한'어떻게 내가 theese 폴더를 만들 수 있을지 궁금 하다니'- 어떤 폴더? 해당 발언 전에 폴더를 언급하지 않았습니다. – ADyson

+0

P. 당신은 아마도 MySQL을 사용하여이 코드를 작성할 수 있지만 PHP가 조금 더 쉽게 만들 수 있다고 생각합니다. – ADyson

+0

@ADyson은 테이블이 아닌 테이블을 의미합니다 : D. –

답변

0

PHP의 glob()을 사용하여 모든 .txt 파일을 반복하고 각 파일에서 MySQL의 LOAD DATA INFILE 명령을 실행하십시오. 그러나 먼저 MySQL에 적절한 데이터 유형 컬럼을 가진 목적지 테이블을 생성하십시오. 그런 다음 PHP에서 가져 오기 코드를 실행하십시오. 위에서 언급 한 것처럼이 방법은 모든 .txt 파일이 동일한 구조로되어있어 모두 데이터베이스 테이블로 가져 오는 것으로 가정합니다.

MYSQL(콘솔 또는 코드 일회 실행)

CREATE TABLE destinationTable (
    ID int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    col1 int(11), 
    col2 varchar(255), 
    col3 decimal(10,2), 
    col4 date, 
    ... 
); 

PHP(반복 루프를 사용하여 이하에서 쉼표로 구분 파일을 가정 실제 분리로 조정)

// OPEN DATABASE CONNECTION 
$dbh = new PDO("mysql:host=$host;dbname=$database",$username,$password); 
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

foreach (glob("/path/to/folder/*.txt") as $file) { 

    $sql = "LOAD DATA INFILE '".$file."' 
      INTO TABLE destinationTable 
      FIELDS TERMINATED BY ',' 
      OPTIONALLY ENCLOSED BY '\"' 
      LINES TERMINATED BY '\r\n';"; 

    $dbh->query($sql); 

} 

// CLOSE CONNECTION 
$dbh = null; 
+0

그건 좋은데,하지만 난 PHP와 MySQL을 연결하는 문제가 있습니다. 내 도메인에서 PHP를 실행하고 있지만 연결할 수있는 데이터베이스는 phpMyAdmin의 해당 데이터베이스입니다. phpMyAdmin은 'LOAD DATA INFILE'을 지원하지 않습니다. 그래서 내 XAMPP 서버를 연결하는 방법을 알고 있다면 ..... @ Parfait –

+0

Phpmyadmin은 MySQL 서버의 GUI 콘솔 일뿐입니다. MySQL 설정에서 'LOAD DATA INFILE'이 활성화되어 있지 않습니다. [this] (http://stackoverflow.com/questions/10762239/mysql-enable-load-data-local-infile)을 참조하십시오. 또한, 다른 오픈 소스 언어 -Perl, Python, R 등과 같이 터미널/명령 줄 (브라우저, 아파치, 서버 등 필요 없음)에서 PHP 스크립트를 실행할 수도 있습니다. – Parfait

관련 문제