CSV 파일에서 MySQL의 데이터 추가

A. MySQL의 CSV 데이터 추가


이 문제는 데이터가있는 경우 데이터를 마무리하기 전에 몇 일을 발생  CSV데이터베이스에 파이썬 가져 오기를 통해 너무 느린 파일 (이상 2 억 개 기록), 다음 사용 MySQL 내장 명령 , 30 초 이상이 두 번째를 완료 할 수있을 것입니다 데이터 가져 오기의 양을 300 만. LOAD DATA INFILE

LOAD DATA INFILE 명령은 데이터베이스에 매우 빠르게 다음 텍스트 파일을 읽을 수 있습니다.

파일을 가져 오기 전에 다음과 같은 요소가 필요합니다 :

  • 데이터베이스 테이블을 해당 데이터를 작성합니다.
  • CSV 데이터 파일 및 데이터베이스 테이블 컬럼 및 데이터 유형의 수가 일치해야합니다.
  • 계정의 데이터베이스 파일을 삽입 허가에 쓴 것은

    우리가 있다고 가정 discounts 테이블 구조는 그대로 다음과 같습니다 :

우리는 사용  [CREATE TABLE statement][1]create 명령을  discounts 테이블 :

CREATE  TABLE의 (할인
    ID INT  NOT  NULL AUTO_INCREMENT,
    제목 VARCHAR ( 255 ) NOT  NULL ,
    EXPIRED_DATE의 DATE NOT  NULL ,DECIMAL ( 10 , 2 ) NULL ,
     PRIMARY  KEY (ID)
);

열 이름, 다른 세 행동 데이터로 파일의 첫 번째 줄을 Discounts.csv.

다음 명령은 원인  c:\tmp\discounts.csv 로 파일  discounts형식을.

LOAD DATA INFILE ' : /tmp/discounts.csv C '  
INTO  TABLE의 할인
필드 TERMINATED BY  ' , '  
동봉 BY를  ' ' ' 
LINES가 종료 BY를  ' \ n ' 
무시 1 개 행을;

하여 임계 데이터 파일 콤마 반사 코드를 분리 하고, 따옴표 둘러싸인 데이터가   표시 CSV에서 한 줄 바꿈   설명한다. FIELD TERMINATED BY ',' ENCLOSED BY '" ‘
LINES TERMINATED BY '\n'

파일의 첫 번째 줄은 열 이름이 포함되어 있기 때문에, 따라서 테이블의 데이터를 가져올 수 없습니다해야, 여기에 1 개 행이 무시 없는 import 문 있도록 첫 번째 행을 무시합니다.

 

II. 가져 오기 데이터 변환 형식


때때로 대상 데이터베이스 테이블 컬럼에 맞지 않는 데이터 형식의 포맷합니다. 간단한 경우, 당신은 할 수 LOAD DATA INFILE 설정된  set 데이터를 변환하는 옵션을

discount_2.csv 파일 만료 시간 열 가정 mm/dd/yyyy 형식을.

테이블 할인에 데이터를 가져올 때, 우리는해야한다  () 함수를 STR_TO_DATE  형식의 날짜로 MySQL을

LOAD DATA INFILE ' : /tmp/discounts_2.csv C ' 
INTO  TABLE의 할인
필드 TERMINATED BY  ' , ' 동봉 BY  ' " ' 
LINES TERMINATED BY를  ' N \ ' 
무시 1 
(제목, @expired_date , 양)
 SET EXPIRED_DATE = STR_TO_DATE ( @expired_date , ' %의 m / % D / % Y ' );

 

III. 원격 MySQL 데이터베이스에 클라이언트 데이터 가져 오기


명령을 사용하여 원격으로 클라이언트 (로컬 컴퓨터)에서 수입 데이터베이스 데이터 전적으로 가능하다. LOAD DATA INFILEMySQL

당신이 사용하는 경우 LOAD DATA INFILE 는 LOCAL 로컬 파일 옵션, 클라이언트 프로그램을 읽은 다음에 보낼 MySQL server. 파일은 같은 각각의 임시 디렉토리 서버에 업로드됩니다  Windows 에서  C:\windows\temp 또는  linux에서  /temp .
이 폴더에는 MySQL을 구성하거나 점유 할 수 없습니다.

우리는 다음과 같은 예를 살펴 :

LOAD DATA LOCAL INFILE   ' : /tmp/discounts.csv C ' 
INTO  TABLE의 할인
필드 TERMINATED BY  ' , '  
동봉 BY를  ' ' ' 
LINES가 종료 BY를  ' \ n ' 
무시 1 개 행을;

유일한 차이는 명령이다  LOCAL 옵션을 제공합니다. 당신이 필요로하는 경우 load 큰 CSV파일을, 당신은 알 수 있습니다 LOCAL 더 많은 시간이 위의 데이터 전송에 낭비되고 있기 때문에, 평소보다 느려집니다 옵션을.

로컬 옵션을 사용하면 연결 MySQL 서버 계정은 데이터를 가져올 파일 사용 권한을 필요로하지 않는다.

사용은  LOAD DATA LOCAL 원격 로컬 파일을 가져올  MySQL서버, 당신은 몇 가지에 관심을 지불 할 필요가 보안 문제 , 당신은 잠재적 인 보안 위험을 피하기 위해이 문제에 대해 알고 있어야합니다.

이 문서에서 증쇄 : https://www.cnblogs.com/nju2014/p/5456632.html

추천

출처www.cnblogs.com/wt869054461/p/11926051.html