2013-10-09 3 views
0

큰 csv 파일을 MySQL에 가져 오려고합니다. 아쉽게도 파일 내의 데이터는 공백과 탭으로 구분됩니다.다중 구분 기호/필드 구분 기호가있는 MySQL에 CSV 파일 가져 오기

결과적으로 테이블에 데이터를로드 할 때마다 Mysql은 한 필드 구분자 만 인식하기 때문에 무수한 빈 셀로 끝납니다. 가져 오기 전에 데이터를 수정하는 것은 옵션이 아닙니다. 여기

데이터의 예이다 :

어떤 아이디어 (모든 행의 두 번째 및 세 번째 탭 값에 의해 분리된다)

# 1574 1 1 1 
$ 1587 6 6 2 
$115 1878 8 9 23 

?

답변

0

내 목표가 파일을 가져 오기만하면 sed -i 's/,/ /g' *.txt을 사용하여 걱정할 구분 기호를 하나만 만들면됩니다.

나는 CSV를 좋아하지만 쉼표 나 공백을 포함하는 큰 따옴표로 묶인 문자열이있을 수 있습니다.이 경우에는 이것이 완벽하지 않습니다. 그것은 여전히 ​​가져올 것이고, 단지 그 문자열을 수정할 것입니다.

그런 경우 생산에서 사용한 또 다른 접근법은 통계/전송입니다. 파일을 변환하고 여러 분리 문자를 지정하는 쉘 스크립트를 작성하는 구문 언어가 있습니다.

MySQL import CSV file using regex delimiter

0

당신이 LOAD DATA INFILE이 시도 사용하고 가정 : 두 번째 열은 COL3/COL2 데이터를 포함하도록 구분 공간입니다

load data local infile 'c:/somefile.txt' into table tabspace 
columns terminated by ' ' 
(col1, @col23, col4, col5) 
set col2 = left(@col23, instr(@col23,char(9))-1), 
    col3 = substr(@col23,instr(@col23,char(9))+1); 

참고. 이 변수는 @ col23 변수에 할당되고 분할 된 다음 col2 및 col3에 할당됩니다.