2011-02-11 2 views
4

방금 ​​data.gov에서 여러 개의 텍스트 파일을 다운로드했습니다. 텍스트 파일에 실제로 필요하지 않은 필드가 있습니다.텍스트 파일의 특정 컬럼을 mysql ..로 가져 오기가 가능합니까?

[1,3] 열을 가져오고 나머지는 그대로 둘 수 있습니까?

'파일에서 데이터로드'를 사용하여 가져 오지만 특정 열만 가져 오는 방법은 mysql 페이지에서 볼 수 없습니다. http://dev.mysql.com/doc/refman/5.0/en/load-data.html

필드는 ^로 구분됩니다. 그냥 그렇게 txt 파일의 라인이

 
00111^first column entry^second column entry^this would be the 3rd column 

나는 당신은 항상 더미 열이있는 테이블을 만들 수

 
first column entry | this would be the 3rd column 

답변

1

를 포함하도록 내 MySQL의 테이블을 얻기 위해 노력하고 있다면 나는 분명 해요 (파일을 자주로드 할 필요가 없다고 가정 할 때) 파일을로드 한 후 삭제할 파일을 선택하십시오. 이 같은

뭔가 :

LOAD DATA LOCAL INFILE '/path/to/file' INTO TABLE table_name 
FIELDS TERMINATED BY '^' (dummy_column1, column1, dummy_column2, column2); 
ALTER TABLE table_name DROP dummy_column1; 
ALTER TABLE table_name DROP dummy_column2; 
+0

감사합니다 trevor, 나는 옵션이 있다는 것을 알았지 만, mysql에이 작업을 수행하기를 바라고있었습니다.거기에없는 것 같습니다 – pedalpete

1

유닉스 플랫폼을 가정하면, 당신은 상류 필드를 필터링 할 수 있습니다.

cut -d^ -f2,4 mygovfile.dat > mytable.txt 

그러면 바람직한 방법으로 가져, 제 1 및 제 칼럼을 필터링한다. 예를 들어

mysqlimport --local -uxxx -pyyy mydb --fields-terminated-by="^" mytable.txt .... 
+0

dev에 유닉스에 아니에요, 그리고 txt 파일을 망쳐 대신 직선 mysql 옵션을 바랐다. – pedalpete

0

이 처리의 가장 일반적인 두 가지 방법 : 그것은 준비 테이블에 그대로

  1. 가져 오기 데이터 그냥 당신이 당신의 "진짜"테이블에 을 필요로 이동 , 스테이징 테이블을 자릅니다.
  2. 텍스트 유틸리티를 사용하여 필요한 것을 개만 잘라냅니다.

내 텍스트 유틸리티는 awk입니다. 최소한의 awk 스크립트는 아마도 약간의 조정 없이는 작동하지 않을 것입니다.

$ awk 'BEGIN { FS="^";OFS=",";}{print $2, $4}' test.dat 
first column entry,this would be the 3rd column 

어떤 종류의 조정이 필요합니까? 일반적으로 포함 된 쉼표, 작은 따옴표 및 큰 따옴표를 처리합니다.

이 부분

BEGIN { FS="^";OFS=",";}{print $2, $4} 

전체 AWK 프로그램입니다.

awk 바위.

2

당신과 특정 열을 가져올 수 있습니다 : 당신이 @dummy에 필요하지 않은 모든 열을

LOAD DATA LOCAL INFILE 'yourFile' INTO TABLE table_name 
FIELDS TERMINATED BY '^' (column1, @dummy, column3, @dummy); 

를 넣습니다.

관련 문제