Excel 파일을 MySQL 데이터베이스로 가져 오는 방법


87

누구든지 MySQL 데이터베이스로 Microsoft Excel 파일을 가져 오는 방법을 설명 할 수 있습니까?

예를 들어, 내 Excel 표는 다음과 같습니다.

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

MySQL 포럼에서 [이 스레드] [1]를 볼 수 있습니다. 원하는 것을 정확히 수행하는 방법을 설명합니다. [1] : forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns

1
이 무료 유틸리티는 MySQL의 테이블로 빠르고 쉽게 엑셀 스프레드 시트를 가져하게 panofish.net/...
panofish

새롭고 다른 아이디어에 +1합니다. 처리 속도가 엄청나게 느립니다. 먼저 파일의 각 행을 읽은 다음 무엇이든 업로드합니다. 5.2K 행을 가져 오는 데 약 15 분이 걸렸습니다
Fr0zenFyr 2013 년

일부 스프레드 시트의 경우 열과 행의 수로 인해 느려질 수 있습니다. 그러나 스프레드 시트를 읽는 데 사용되는 Microsoft의 com-object 라이브러리를 비난합니다. 내 프로그램은 라이브러리가 허용하는 한 빨리 스프레드 시트를 읽습니다. mysql 삽입은 매우 빠릅니다. 가져 오기 전에 불필요한 열을 제거 할 수 있다면 도움이 될 수 있습니다.
panofish

5173 행에 14 열이 있습니다. 불필요한 처리를 피하기 위해 이미 모든 빈 열 / 행을 선택하고 삭제했습니다. 내가 사용하고 있던 시스템은 2.5G RAM과 core2duo 프로세서를 가지고 있었고 실행중인 프로세스가 많지 않았고 성능 탭은 65 % 사용률을 보였고 여전히 많은 RAM을 사용하지 않았습니다. 그래서 나는 하드웨어를 비난하지는 않을 것 같지만, 당신이 말했듯이 MS com 객체는 엉망이다. MS가 초심자를위한 생명의 은인처럼 보이는 쓰레기를 언제 그만 만들지 모르겠다. 나는 MS 제품을 위해 여분의 쓰레기를하는 것에 지쳤습니다.
Fr0zenFyr 2014 년

답변:


46
  1. 텍스트 형식으로 내 보냅니다. 가장 쉬운 방법은 탭으로 구분 된 버전이지만 CSV도 작동 할 수 있습니다.

  2. 데이터로드 기능을 사용하십시오. 참조 http://dev.mysql.com/doc/refman/5.1/en/load-data.html를

  3. 탭으로 구분 된 데이터에 대한 좋은 예를 제공하므로 페이지의 절반을 아래로보십시오.

    '\'로 이스케이프 된 '\ t'로 끝나는 필드

  4. 데이터를 확인하십시오. 때때로 인용 또는 이스케이프에 문제가 발생하여 소스, 가져 오기 명령을 조정해야합니다. 그렇지 않으면 SQL을 통해 사후 처리하는 것이 더 쉬울 수 있습니다.


2
CSV로 내보낼 때 [적어도] Excel 2013은 0 값에 대해 로케일 종속 (OS 지역 설정에 따라) 소수점 구분 기호 (예 : ',', '정의대로 사용 다른 모든 값은 셀 속성 '구분 기호로 구분합니다. CSV를 사용하지 않는 것이 가장 좋습니다.
afk5min 2014

1
이 절차를 수행하려면 먼저 적절한 필드가있는 테이블을 만들어야합니다.
LarsH

그게 유일한 문제는 아닙니다. 이 절차가 Excel에서 셀 내부의 캐리지 리턴을 올바르게 처리하는지 확실하지 않습니다. Excel로 CSV에서조차 수입은 실패
라울 루나

1
@ afk5min "독 데이터"란 무엇을 의미합니까 ??? 이러한 모든 태그와 마크 업은 분명히 다른 MS 제품으로 가져 오려는 사용자에게 매우 유용합니다.
Mindwin

1
* 당신은 가장 쉬운 "가장 어려운 방법"하지 의미
Revious

102

이를 수행 할 수있는 간단한 온라인 도구 인 sqlizer.io가 있습니다.

sqlizer.com의 스크린 샷

XLSX 파일을 여기에 업로드하고 시트 이름과 셀 범위를 입력하면 CREATE TABLE 문과 여러 INSERT 문을 생성하여 모든 데이터를 MySQL 데이터베이스로 가져옵니다.

(면책 조항 : SQLizer 실행을 도와드립니다)


22
이 도구가 있다는 사실을 알고 있으면 좋지만 사용해야할지 말아야할지 확실히 생각하십시오. 스프레드 시트에 민감한 데이터 (예 : 사용자 이메일, 암호, 참조 정보, 의료 정보 등)가 포함되어있는 경우 좋지 않을 수 있습니다. 이 사이트는 귀하의 데이터를 저장하지 않을 수 있으며 안전 할 수 있지만 확실하게 알 수있는 방법은 없습니다.
Chris Schmitz

1
@DivyeshJesadiya 최대 5000 행까지 무료입니다. 그 후에는 한 달 사용에 10 달러를 지불해야합니다.
d4nt

@doxsi 나에게 괜찮아 보이는데, 어떤 종류의 문제가 있었습니까?
d4nt

@ChrisSchmitz 우리는 보안 슈퍼 신중 우리는 SQLizer의 동작 최근 방법에 대한 블로그 포스트를 작성 blog.sqlizer.io/posts/privacy-at-sqlizer을
a_good_swan

작동합니다. Excel 형식에주의하십시오. xlt는 허용되지 않는 반면 xls는 허용됩니다.
Emanuel Pirovano 2018

40

다음은 추가 소프트웨어에 의존하지 않는 MySQL 데이터베이스로 스프레드 시트 데이터를 가져 오는 또 다른 방법입니다. Excel 테이블을 sales라는 MySQL 데이터베이스의 테이블로 가져 오려고한다고 가정 해 보겠습니다 mydatabase.

  1. 관련 셀 선택 :

    여기에 이미지 설명 입력

  2. Mr. Data Converter에 붙여넣고 출력을 MySQL로 선택합니다.

    여기에 이미지 설명 입력

  3. 생성 된 출력에서 ​​요구 사항에 맞게 테이블 이름 및 열 정의를 변경합니다.

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. MySQL Workbench를 사용 중이거나 이미 mysql명령 줄에서 로그인 한 경우 3 단계에서 생성 된 SQL 문을 직접 실행할 수 있습니다. 그렇지 않으면 코드를 텍스트 파일 (예 :)에 붙여넣고 import.sqlUnix 셸에서 다음 명령을 실행합니다.

    mysql mydatabase < import.sql

    SQL 파일에서 가져 오는 다른 방법은 이 Stack Overflow 답변 에서 찾을 수 있습니다 .


1
이것이 가장 쉬운 방법이었습니다. 감사! SQL에서 여분의 기본 키 'ID'를 제거하고 선택한 AUTO 증분을 배치하는 것을 잊지 마십시오.
Fandango68

29

실제로 다양한 수준의 복잡성과 성공으로 Excel 파일을 MySQL 데이터베이스로 가져 오는 방법에는 여러 가지가 있습니다.

  1. Excel2MySQL . Excel 데이터를 MySQL로 가져 오는 가장 쉽고 빠른 방법입니다. 모든 버전의 Excel을 지원하며 Office 설치가 필요하지 않습니다.

    Excel2MySQL 스크린 샷

  2. LOAD DATA INFILE :이 인기있는 옵션은 아마도 가장 기술적이며 MySQL 명령 실행에 대한 이해가 필요합니다. 로드하기 전에 테이블을 수동으로 생성하고 적절한 크기의 VARCHAR 필드 유형을 사용해야합니다. 따라서 필드 데이터 유형이 최적화되지 않았습니다. LOAD DATA INFILE은 'max_allowed_packet'크기를 초과하는 대용량 파일을 가져 오는 데 문제가 있습니다. 특수 문자 및 외국 유니 코드 문자를 가져 오는 데 문제가 발생하지 않도록 특별한주의가 필요합니다. 다음은 test.csv라는 csv 파일을 가져 오는 데 사용한 최근 예제입니다.

    여기에 이미지 설명 입력

  3. phpMyAdmin : 먼저 데이터베이스를 선택한 다음 가져 오기 탭을 선택합니다. phpMyAdmin은 자동으로 테이블을 생성하고 VARCHAR 필드의 크기를 조정하지만 필드 유형을 최적화하지는 않습니다. phpMyAdmin은 'max_allowed_packet'크기를 초과하는 큰 파일을 가져 오는 데 문제가 있습니다.

    여기에 이미지 설명 입력

  4. MySQL for Excel : Oracle의 무료 Excel 추가 기능입니다. 이 옵션은 마법사를 사용하고 큰 파일의 경우 가져 오기가 느리고 버그가 많기 때문에 약간 지루하지만 VARCHAR 데이터가있는 작은 파일에는 좋은 옵션 일 수 있습니다. 필드가 최적화되지 않았습니다.

    여기에 이미지 설명 입력


안녕하세요 @panofish, 매일 업데이트되는 엑셀이 있습니다. 전체 테이블이 아니라 업데이트 된 데이터 만 mysql 데이터베이스 테이블에 저장하고 싶습니다. (즉) 하루에 한 행을 테이블에 넣습니다. 어떻게 할 수 있습니까?
Arun Raja 2014

이러한 솔루션은 모두 전체 스프레드 시트를로드하고 MySQL 테이블을 교체하거나 테이블에 추가하는 데 중점을 둡니다. 변경 사항이 새 레코드를 추가하거나 기존 레코드를 변경합니까?
panofish 2014.11.24

값을 덮어 쓰는 것입니다. 그러나 날짜를 기준으로 데이터베이스에 아직 존재하지 않는 값만 추가되기를 원합니다. 이렇게하면 매일 많은 행을 추가하는 대신 일부 행만 추가하여 성능을 높일 수 있습니다.
Arun Raja

2
Excel2MySQL 도구는 데이터베이스 스크립트 만 생성 할 수 있어야합니다. :(
joseantgv 2015

PHPMyAdmin이 가장 쉽고 빠릅니다.
Amir Hajiha

2

이 모든 설정이 있는지 확실하지 않지만 저에게는 PHP와 MYSQL을 사용하고 있습니다. 그래서 PHP 클래스 PHPExcel을 사용합니다. xls, xlsx, cvs 등 거의 모든 형식의 파일을 가져 와서 읽고 / 또는 삽입 할 수 있습니다.

그래서 내가하는 일은 Excel을 phpexcel 객체에로드 한 다음 모든 행을 반복하는 것입니다. 내가 원하는 것을 기반으로 간단한 SQL 삽입 명령을 작성하여 Excel 파일의 데이터를 내 테이블에 삽입합니다.

프런트 엔드에서는 약간의 작업이지만 기존 코드 예제 중 일부를 조정하면됩니다. 그러나 가져 오기를 변경하는 데 전화를 걸면 간단하고 빠릅니다.


1

가장 쉽고 쉬운 방법은 오라클의 무료 앱인 "MySQL for Excel"앱을 사용하는 것입니다. 이 앱은 데이터를 mysql로 ​​내보내고 가져 오는 데 탁월한 플러그인을 추가했습니다. 여기 에서 다운로드 할 수 있습니다.


1

텍스트 파일을 사용하여 데이터를 가져올 때 따옴표와 Excel에서 숫자 서식을 지정하는 방법에 문제가있었습니다. 예를 들어, 내 Excel 구성에서는 점 대신 소수점 구분 기호로 쉼표를 사용했습니다.

이제 Microsoft Access 2010을 사용 하여 MySql 테이블을 연결된 테이블로 엽니 다. Excel에서 Access로 셀을 복사하여 붙여 넣을 수 있습니다.

이렇게하려면 먼저 MySql ODBC 드라이버를 설치하고 ODBC 연결을 만듭니다 . 그런 다음 액세스의 "외부 데이터"탭에서 "ODBC 데이터베이스"대화 상자를 열고 ODBC 연결을 사용하여 테이블에 연결합니다.

MySql Workbench를 사용하면 Excel 데이터를 복사 하여 MySql Workbench 의 결과 그리드에 붙여 넣을 수도 있습니다. 이 답변에 자세한 지침 을 제공했습니다 .



0

Excel을 MySQL로 가져 오는 데 매우 직관적 인 GIU 인 DocChow를 사용할 수 있으며 대부분의 일반적인 플랫폼 (Linux 포함)에서 무료입니다.

특히 날짜, datetime 데이터 유형에 대해 우려하는 경우 DocChow 는 데이터 유형을 쉽게 처리합니다. 하나의 MySQL 테이블로 가져 오려는 여러 Excel 스프레드 시트로 작업하는 경우 DocChow는 더러운 작업을 수행합니다.


0

1 단계 CSV 파일 만들기

2 단계 : mysql 서버에 로그인

     mysql -uroot -pyourpassword 

3 단계 CSV 파일로드

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);

0

또 다른 유용한 도구이자 MySQL 프런트 엔드 대체 도구는 Toad for MySQL 입니다. 안타깝게도 Quest 는 더 이상 지원하지 않지만 대부분의 파일 유형을 지원하는 IMPORT 및 EXPORT 마법사가있는 뛰어난 MySQL 용 IDE입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.