programing

CSV 파일을 MySQL 테이블로 Import하려면 어떻게 해야 합니까?

minecode 2022. 12. 20. 21:33
반응형

CSV 파일을 MySQL 테이블로 Import하려면 어떻게 해야 합니까?

클라이언트로부터 정규화되지 않은 이벤트 일지 CSV가 있어 MySQL 테이블에 로드하여 올바른 형식으로 리팩터링하려고 합니다.CSV 파일의 각 열에 하나의 필드가 있는 'CSVImport'라는 테이블을 만들었습니다.CSV에는 99개의 열이 포함되어 있기 때문에 이 작업 자체는 매우 어려운 작업이었습니다.

CREATE TABLE 'CSVImport' (id INT);
ALTER TABLE CSVImport ADD COLUMN Title VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN Company VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN NumTickets VARCHAR(256);
...
ALTER TABLE CSVImport Date49 ADD COLUMN Date49 VARCHAR(256);
ALTER TABLE CSVImport Date50 ADD COLUMN Date50 VARCHAR(256);

테이블에는 제약조건은 없으며 카운트(INT로 표시), 예/아니오(BIT로 표시), 가격(DIMAL로 표시) 및 텍스트 블러(TEXT로 표시)를 포함하는 열을 제외한 모든 필드에는 VARCHAR(256) 값이 있습니다.

데이터를 파일에 로드하려고 했습니다.

LOAD DATA INFILE '/home/paul/clientdata.csv' INTO TABLE CSVImport;
Query OK, 2023 rows affected, 65535 warnings (0.08 sec)
Records: 2023  Deleted: 0  Skipped: 0  Warnings: 198256
SELECT * FROM CSVImport;
| NULL             | NULL        | NULL           | NULL | NULL               | 
...

the the the the the the the the the the the the the the the the the the the the 。NULL.

문제는 텍스트 블러에 여러 줄이 포함되어 있고 MySQL은 각각의 새로운 행이 하나의 데이터 행에 대응하는 것처럼 파일을 해석하고 있다는 것입니다.OpenOffice에 문제없이 파일을 로드할 수 있습니다.

clientdata.csv 파일에는 2593행과 570개의 레코드가 포함되어 있습니다.첫 번째 줄에는 열 이름이 포함됩니다.쉼표로 구분되어 있고 텍스트는 큰따옴표로 구분되어 있는 것 같습니다.

갱신:

확실하지 않은 경우 다음 매뉴얼을 참조하십시오.http://dev.mysql.com/doc/refman/5.0/en/load-data.html

가 '아까부터'에 대한 했습니다.LOAD DATAOpenOffice가 충분히 추론할 수 있을 만큼 똑똑하고, 이제 정확한 수의 레코드를 로드합니다.

LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

아직도 많은 .NULL로드된 데이터가 모두 올바른 위치에 없는 것 같지 않습니다.

mysqlimport를 사용하여 테이블을 데이터베이스에 로드합니다.

mysqlimport --ignore-lines=1 \
            --fields-terminated-by=, \
            --local -u root \
            -p Database \
             TableName.csv

http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/에서 찾았습니다.

, 「」를 합니다.--fields-terminated-by='\t'

문제의 핵심은 CSV 파일의 열을 표의 열과 일치시키는 것 같습니다.

많은 그래피컬 mySQL 클라이언트에는 이런 종류의 Import 대화상자가 있습니다.

제가 좋아하는 일은 Windows 기반의 HeidiSQL입니다.그래피컬 인터페이스를 통해LOAD DATA명령어는 나중에 프로그래밍 방식으로 재사용할 수 있습니다.

텍스트 파일 가져오기

스크린샷: "텍스트 파일 가져오기" 대화 상자

파일 가져오기 [텍스트 파일 가져오기]로이동하십시오.Tools > Import CSV file:

여기에 이미지 설명 입력

200개 이상의 행을 Import한 가장 간단한 방법은 phpmyadmin sql 창의 아래 명령어입니다.

CountryId, CountryName 두 개의 열이 있는 간단한 국가 표가 있습니다.

.csv > .csv data > 입니다.CSV 파일

다음은 명령어입니다.

LOAD DATA INFILE 'c:/country.csv' 
INTO TABLE country 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS

두 번째 열에 표시되지 않도록 유의하십시오. 그렇지 않으면 가져오기가 중지됩니다.

I 이 방법을 사용하여 0.046초 동안 10만 개 이상의 레코드(~5MB)를 Import합니다.

방법은 다음과 같습니다.

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

필드가 여러 개 있는 경우(일반적으로 마지막 필드는 건너뜁니다)(MySQL 5.6.17) 마지막 행을 포함하는 것이 매우 중요합니다.

LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

그런 다음 필드 제목으로 번째 행이 있다고 가정하면 이 행도 포함할 수 있습니다.

IGNORE 1 ROWS

파일에 헤더 행이 있는 경우 다음과 같습니다.

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(field_1,field_2 , field_3);

phpMyAdmin은 CSV Import를 처리할 수 있습니다.스텝은 다음과 같습니다.

  1. CSV 파일을 MySQL 테이블필드와 같은 순서로 준비합니다.

  2. CSV(있는 경우)에서 헤더 행을 삭제하여 데이터만 파일에 포함되도록 합니다.

  3. phpMyAdmin 인터페이스로 이동합니다.

  4. 왼쪽 메뉴에서 테이블을 선택합니다.

  5. 맨 위에 있는 Import 버튼을 클릭합니다.

  6. CSV 파일을 참조합니다.

  7. "LOAD DATA를 사용하는 CSV" 옵션을 선택합니다.

  8. "terminated by" 필드에 " " 라고 입력합니다.

  9. 열 이름을 데이터베이스 테이블과 같은 순서로 입력합니다.

  10. 이동 버튼을 클릭하면 완료됩니다.

앞으로 사용할 수 있도록 준비한 메모로, 다른 사람이 혜택을 받을 수 있다면 여기에서 공유합니다.

MySQL Workbench(현재 6.3 버전)를 사용하는 경우 다음을 통해 이를 수행할 수 있습니다.

  1. '테이블' 오른쪽 클릭;
  2. 테이블 데이터 Import Wizard를 선택합니다.
  3. csv 파일을 선택하고 지시에 따릅니다(JSON도 사용할 수 있습니다).좋은 점은 Import할 CSV 파일을 기반으로 새 테이블을 만들거나 기존 테이블에 데이터를 로드할 수 있다는 것입니다.

여기에 이미지 설명 입력

LOAD DATA 문의 열을 나열하여 이 문제를 해결할 수 있습니다.매뉴얼:

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

따라서 이 경우 csv 파일에 표시되는 순서대로 99개의 열을 나열해야 합니다.

이거 먹어봐, 나한테는 효과가 있었어

    LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS;

여기서 IGNORE 1 ROWS는 필드 이름이 포함된 첫 번째 행을 무시합니다.파일 이름에는 파일의 절대 경로를 입력해야 합니다.

뭔가 이상한 게 보여요.EXCAPING에 사용하는 문자와 동일한 문자를 Escape에 사용하고 있습니다.그래서 엔진이 ''를 발견했을 때 어떻게 해야 할지 모르기 때문에 아무것도 제대로 된 위치에 없는 것 같습니다.탈옥의 선을 제거하면 잘 될 것 같아요.예를 들어 다음과 같습니다.

LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

CSV를 분석하여(수동으로 시각적으로...) 이스케이프에 사용하는 문자를 찾지 않는 한.「\」인 경우도 있습니다.하지만 만약 없다면 사용하지 마세요.

mysql 명령줄은 Import 시 너무 많은 문제가 발생하기 쉽습니다.방법은 다음과 같습니다.

  • 공백이 없도록 헤더 이름을 편집하려면 excel을 사용합니다.
  • .csv로 저장
  • 무료 Navicat Lite SQL Browser를 사용하여 새 테이블을 가져오고 자동으로 만듭니다(이름 지정).
  • 새 테이블을 엽니다. ID에 대한 기본 자동 번호 열을 삽입합니다.
  • 원하는 대로 열의 유형을 변경합니다.
  • 알았어!

또 다른 솔루션은 놀라운 csvkit 스위트의 csvsql 툴을 사용하는 것입니다.

사용 예:

csvsql --db mysql://$user:$password@localhost/$database --insert --tables $tablename  $file

이 도구는 데이터 유형(기본 동작)을 자동으로 추론하고 테이블을 만들고 작성된 테이블에 데이터를 삽입할 수 있습니다. --overwrite테이블이 이미 존재하는 경우 옵션을 사용하여 테이블을 드롭할 수 있습니다. --insertoption : option : " option" 에서 .

제품군을 설치하려면

pip install csvkit

제제: : python-dev,libmysqlclient-dev,MySQL-python

apt-get install python-dev libmysqlclient-dev
pip install MySQL-python

Intelij https://www.jetbrains.com/datagrip/features/importexport.html 를 사용하는 경우

여기에 이미지 설명 입력

mysql 워크벤치를 사용하여 동일한 작업을 수행합니다.

  1. 새 스키마 생성
  2. 새로 만든 스키마 열기
  3. "테이블"을 마우스 오른쪽 버튼으로 클릭하고 "테이블 데이터 가져오기 마법사"를 선택합니다.
  4. CSV 파일 경로와 테이블 이름을 지정하고 마지막으로 열 유형을 구성합니다. 마법사는 해당 값을 기반으로 기본 열 유형을 설정하기 때문입니다.

주의: "tail -f [mysqlworkbenchpath]/log/wb*.log"를 사용하여 mysql 워크벤치의 로그 파일에서 오류가 없는지 확인합니다.

csv 파일을 SQL 테이블로 가져오는 방법

예: " " "Overseas_trade_index CSV 파일( 파일)

순서:

  1. 표를 만들어야 합니다.overseas_trade_index.

  2. csv 파일과 관련된 열을 생성해야 합니다.

    SQL 쿼리:

    ( id int not null primary key auto_increment,
    series_reference varchar (60),
    period varchar (60),
    data_value decimal(60,0),
    status varchar (60),
    units varchar (60),
    magnitude int(60),
    subject text(60),
    group text(60),
    series_title_1 varchar (60),
    series_title_2 varchar (60),
    series_title_3 varchar (60),
    series_title_4 varchar (60),
    series_title_5 varchar (60),
     );
    
  3. 단말기에서 mysql 데이터베이스를 연결해야 합니다.

    =>show databases;
    =>use database;
    =>show tables;
    
  4. csv 데이터를 mysql 테이블로 Import하려면 이 명령을 입력하십시오.

    load data infile '/home/desktop/Documents/overseas.csv' into table trade_index fields terminated by ',' lines terminated by '\n' (series_reference,period,data_value,status,units,magnitude,subject,series_title1,series_title_2,series_title_3,series_title_4,series_title_5);
    
  5. sqdatabase에 대한 다음 해외 무역 지수 데이터를 확인하십시오.

    select * from trade_index;
    

Excel 스프레드시트가 로드된 Windows 머신을 사용하는 경우 Excel에 대한 새로운 mySql 플러그인은 경이적입니다.오라클 직원들은 그 소프트웨어를 정말 잘 다루었습니다.Excel에서 직접 데이터베이스 연결을 할 수 있습니다.이 플러그인은 데이터를 분석하여 데이터와 일치하는 형식으로 테이블을 설정합니다.변환해야 할 데이터의 거대한 CSV 파일이 몇 개 있었습니다.이 도구는 큰 시간 절약이었어요.

http://dev.mysql.com/downloads/windows/excel/

Excel 내에서 온라인으로 데이터베이스에 입력되는 업데이트를 수행할 수 있습니다.이것은 매우 저렴한 GoDaddy 공유 호스팅에서 작성된 mySql 파일에서 매우 잘 작동했습니다. (GoDaddy에서 테이블을 작성할 때 데이터베이스의 오프사이트 액세스를 활성화하려면 몇 가지 비표준 설정을 선택해야 합니다.)

이 플러그인을 사용하면 XL 스프레드시트와 온라인 mySql 데이터 스토리지 간의 완전한 상호 작용이 가능합니다.

답변이 늦은 것은 알지만, 몇 가지 다른 방법을 언급하고 싶습니다.가장 쉬운 것은 명령줄을 사용하는 것입니다.순서는 다음과 같습니다.

  1. 다음 명령을 입력하여 MySQL CLI에 액세스합니다.

mysql -u my_user_name -p

  1. 데이터베이스에 표 작성
use new_schema;

CREATE TABLE employee_details (
id INTEGER,
employee_name VARCHAR(100),
employee_age INTEGER,
PRIMARY KEY (id)
);
  1. CSV 파일을 테이블로 Import합니다.파일 경로를 언급하거나 MySQL 서버의 기본 디렉토리에 파일을 저장할 수 있습니다.
LOAD DATA INFILE 'Path to the exported csv file'
INTO TABLE employee_details
FIELDS TERMINATED BY ','
IGNORE 1 ROWS;

솔루션은 여러 솔루션 중 하나이며, 이 튜토리얼에서 찾았습니다. MySQL 데이터베이스에 CSV 파일을 로드하는 것이 일상적인 작업이라면 이 프로세스를 자동화하는 것이 좋습니다.이 경우 예약에 따라 데이터를 로드할 수 있는 일부 타사 도구를 사용할 수 있습니다.

csv 파일을 mysql 데이터베이스로 가져오기 위한 PHP 쿼리

$query = <<<EOF
            LOAD DATA LOCAL INFILE '$file'
             INTO TABLE users
             FIELDS TERMINATED BY ','
             LINES TERMINATED BY '\n'
             IGNORE 1 LINES
            (name,mobile,email)
    EOF;
if (!$result = mysqli_query($this->db, $query))
   {
        exit(mysqli_error($this->db));
   }

**샘플 CSV 파일 데이터 **

name,mobile,email
Christopher Gritton,570-686-3439,ChristopherKGritton@inbound.plus
Brandon Wilson,541-309-5149,BrandonMWilson@inbound.plus
Craig White,516-795-8065,CraigJWhite@inbound.plus
David Whitney,713-214-3966,DavidCWhitney@inbound.plus

다음은 샘플 Excel 파일 스크린샷입니다.

여기에 이미지 설명 입력

as 저장 후 .csv를 선택합니다.

메모장++ 또는 기타 메모장을 사용하여 열면 아래와 같이 .csv 데이터 스크린샷이 나타납니다.

여기에 이미지 설명 입력

머리글을 삭제하고 mysql Table과 같이 .csv에 컬럼이 정렬되어 있는지 확인합니다.folder_name을 폴더 이름으로 바꿉니다.

로드 데이터 로컬 파일
'D:/folder_name/myfilename.csv'는 '', (fname,lname,이메일,전화)로 종료된 테이블 메일 필드로 변환됩니다.

빅데이터라면 커피를 가져와 로딩할 수 있습니다!

그것만 있으면 돼.

servername, username, password, dbname, 파일 경로, tablename 및 삽입할 데이터베이스에 있는 필드를 변경합니다.

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "bd_dashboard";
    //For create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    $query = "LOAD DATA LOCAL INFILE 
                'C:/Users/lenovo/Desktop/my_data.csv'
                INTO TABLE test_tab
                FIELDS TERMINATED BY ','
                LINES TERMINATED BY '\n'
                IGNORE 1 LINES
                (name,mob)";
    if (!$result = mysqli_query($conn, $query)){
        echo '<script>alert("Oops... Some Error occured.");</script>';
        exit();
            //exit(mysqli_error());
       }else{
        echo '<script>alert("Data Inserted Successfully.");</script>'
       }
    ?>

phpmyadmin을 사용하여 간단하게 했습니다.@Farhan의 절차를 따랐지만 모든 데이터가 한 열에 정리되어 있었습니다.조작 방법:

  1. CSV 파일을 생성하여 열 이름을 가진 헤더 행을 삭제했습니다.데이터만 보관.
  2. csv 열에 일치하는 열 이름을 가진 테이블을 만들었습니다.
  3. 각 열에 적절한 유형을 할당해야 합니다.
  4. 방금 Import를 선택하고 Import 탭으로 이동했습니다.
  5. 브라우즈에서 CSV 파일을 선택하고 모든 옵션을 그대로 유지했습니다.
  6. 놀랍게도 모든 데이터가 해당 열에 성공적으로 Import되었습니다.

CSV를 Import하기 위해 MySQL Query를 실행할 때 'Error Code: 1290' 오류가 발생했습니다. MySQL 서버가 --secure-file-priv 옵션으로 실행되고 있기 때문에 이 문을 실행할 수 없습니다.'

그래서 안전한 파일 위치를 위해 파일을 이동했습니다.

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Orders.csv'   
INTO TABLE orderdetails.orders 
FIELDS TERMINATED BY ','  
 ENCLOSED BY '"'
 LINES TERMINATED BY '\n'
 IGNORE 1 ROWS

여기서 파일 위치는 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/Orders.csv'입니다.이는 CSV 파일을 'secure_file_priv' 위치로 이동했기 때문입니다.그렇지 않으면 에러가 발생합니다.

는 쿼리 secure_file_priv를 수 .SHOW VARIABLES LIKE "secure_file_priv";

출처: CSV 파일을 MySQL로 Import(쿼리 또는 Workbench 사용)

언급URL : https://stackoverflow.com/questions/3635166/how-do-i-import-csv-file-into-a-mysql-table

반응형