2013-10-31 2 views
0

누군가 내가 원격 csv 파일을 mySQL 테이블에로드하기 위해 PHP 스크립트를 만들 수있는 방법에 대한 조언을 해줄 수 있습니까?원격 CSV를 mySQL 테이블로 가져 오시겠습니까?

필자는 CSV 필드와 관련 유형으로 mySQL 테이블을 설정했습니다.

나는 파일이 로컬 시스템에 있다면 나는 다음을 사용할 수도 믿는다 최종 솔루션은 모든 4am에 PHP 스크립트를 실행하는 cronjob에가있는 리눅스 서버가 될 것입니다

LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table; 

아침. CSV 파일은 로그인 자격 증명이 필요한 SFTP 공유에 위치합니다. 불행히도, 그것은 같은 상자에 위치 할 수 없습니다. 당신이 PHP에서 MySQL 서버의 로컬 파일 시스템에 쓸 수 있다면, 당신은 검색 할 PHP curl functions을 사용할 수 있습니다

$data = $conn->query('LOAD DATA INFILE ' .$filelocation. ' INTO TABLE wl_transactions FIELDS TERMINATED BY ";" IGNORE 1 LINES'); 
+0

이 도움이 될 것입니다에 : HTTP : //www.johnboy.com/blog/tutorial-import-a-csv-file-using- php-and-mysql –

+0

지금은 꽤 오래된 것 같아요. PDO를 사용하지 않고 제가 이해하는 바에 따르면, LOAD DATA는 이제 내용을 반복 할 필요가 없다는 것을 의미합니다. – Xeo

답변

1

아래 계정 시몬스 코멘트를 고려

, 지금은 로컬로 가져 얻기 위해 고군분투 원격 파일을 저장 한 다음 로컬 파일에 저장하고 LOAD DATA 명령을 트리거합니다.

+0

가서보고 보겠습니다. 현재 LOAD DATA 코드에 문제가 있습니다. 업데이트 된 질문 – Xeo

+0

업데이트 : 지금 어떤 문제가 있습니까? 쿼리는 나에게 잘 보입니다. MySQL 매뉴얼에 언급 된 보안 요구 사항을 살펴 보았습니까? ('LOAD DATA INFILE', 파일 퍼미션,'secure_file_priv' 서버 변수를 실행하는데 필요한 권한? – Simon

0

이것은 워드 프레스 플러그인 환경에서 작동하는 방법입니다. 잘하면 도움이 될 것입니다.

먼저 사용자가 CSV 파일을 선택하고 추가 설정을 선택할 수있는 양식을 만들었습니다.

이러한 설정은 $ this-> csv_settings 배열

if(isset($this->csv_settings['ignore'])): 
    $ignore = "IGNORE 1 LINES ({{The columns to ignore}})"; 
else: 
    $this->csv_settings['ignore'] = NULL; 
endif; 

/** @var wpdb $wpdb */ 
global $wpdb; 
$result = $wpdb->query($wpdb->prepare('load data local infile \'$this->path_to_file\' into table {{your table name}} fields terminated by \'' . $this->csv_settings['terminated'] . '\' enclosed by \'' . $this->csv_settings['enclosed'] . '\' lines terminated by \'' . $this->csv_settings['lines'] . '\' '. $ignore.';')); 
관련 문제