본문으로 건너뛰기

Excel에서 SQL로 변환

Excel 파일을 놓고 데이터베이스를 고르면 CREATE TABLE과 INSERT 문이 담긴 SQL 스크립트가 만들어져요. 열마다 타입을 정하고, 모든 수정 사항을 행과 열과 함께 나열해요.

내 파일
xlsxclientes_2024.xlsx샘플 파일, 7kB
내 데이터베이스

4개 행 변환, 수정 10개, 거부 없음

보기
clientes_2024.xlsx의 처음 몇 행이며, 수정한 부분마다 표시되어 있어요
행
500127Peña Muñoz0123403/02/2024sí1.234,50
600128José Ángel0987015/02/2024noN/A
700129Zoë Ortíz4410029/02/2024sí-12,00
800130Ñuño Castañeda0670011/03/2024no980,75
-- Written by IntoSQL for PostgreSQL.

SET client_encoding = 'UTF8';
BEGIN;

CREATE TABLE clientes_2024 (
    no_cliente text NOT NULL,
    nombre text NOT NULL,
    c_p text NOT NULL,
    alta date NOT NULL,
    activo boolean NOT NULL,
    saldo numeric(6,2)
);
COMMENT ON COLUMN clientes_2024.no_cliente IS 'Nº Cliente';
COMMENT ON COLUMN clientes_2024.c_p IS 'C.P.';

INSERT INTO clientes_2024 (no_cliente, nombre, c_p, alta, activo, saldo) VALUES
('00127', 'Peña Muñoz', '01234', '2024-02-03', TRUE, 1234.50),
('00128', 'José Ángel', '09870', '2024-02-15', FALSE, NULL),
('00129', 'Zoë Ortíz', '44100', '2024-02-29', TRUE, -12.00),
('00130', 'Ñuño Castañeda', '06700', '2024-03-11', FALSE, 980.75);

COMMIT;

수정 사항

  1. 헤더는 4행에 있어요. 그 위의 행은 제외했어요.
  2. 9행("TOTAL")은 합계라서 제외했어요.
  3. PostgreSQL에서 따옴표 없이 읽을 수 있도록 "Nº Cliente" 열 이름을 no_cliente(으)로 바꿨어요.
  4. PostgreSQL에서 따옴표 없이 읽을 수 있도록 "C.P." 열 이름을 c_p(으)로 바꿨어요.
  5. "Nº Cliente" 열의 앞자리 0을 유지했어요. 00127 값은 00127 그대로 텍스트로 저장돼요.
  6. "C.P." 열의 앞자리 0을 유지했어요. 01234 값은 01234 그대로 텍스트로 저장돼요.
  7. 15/02/2024 값을 보면 "Alta" 열의 날짜는 일이 먼저예요. 그래서 03/02/2024 값을 2024‑02‑03 날짜로 읽어요.
  8. "Activo" 열에 예/아니요 단어(sí, no)가 있어 불리언으로 저장했어요.
  9. "Saldo" 열의 숫자는 소수점으로 쉼표를 써요. 1.234,50 값을 1234.50 값으로 읽어요.
  10. "Saldo" 열의 N/A 값을 빈 값으로 읽었어요(4개 중 1개).

파일은 이 컴퓨터에서 변환되고 업로드되지 않아요.

다른 샘플:

Excel 파일 하나, 데이터베이스 여섯 개

위 샘플 clientes_2024.xlsx의 각 열이 데이터베이스마다 받는 형식이에요.

파일에서첫 값PostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
Nº Cliente00127textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
NombrePeña Muñoztextvarchar(16)varchar(16)TEXTnvarchar(16)VARCHAR2(16 CHAR)
C.P.01234textvarchar(8)varchar(8)TEXTnvarchar(8)VARCHAR2(8 CHAR)
Alta03/02/2024datedatedateDATEdateDATE
Activosíbooleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
Saldo1.234,50numeric(6,2)decimal(6,2)decimal(6,2)NUMERIC(6,2)decimal(6,2)NUMBER(6,2)

스크립트를 데이터베이스에 불러오기

다운로드한 파일은 일반 .sql 파일이에요. 각 데이터베이스의 자체 도구로 실행해요.

  • PostgreSQL

    psql -v ON_ERROR_STOP=1 -d mydb -f clientes_2024.postgresql.sql

    ON_ERROR_STOP을 쓰면 psql이 첫 오류에서 멈춰요. 스크립트는 하나의 트랜잭션으로 실행되므로, 불러오기에 실패해도 데이터베이스는 그대로예요.

  • MySQL

    mysql --default-character-set=utf8mb4 mydb < clientes_2024.mysql.sql

    스크립트가 utf8mb4를 직접 설정해요. 이 플래그로 클라이언트도 같은 방식으로 보내므로 악센트가 그대로 전달돼요.

  • MariaDB

    mariadb --default-character-set=utf8mb4 mydb < clientes_2024.mariadb.sql

    스크립트가 utf8mb4를 직접 설정해요. 이 플래그로 클라이언트도 같은 방식으로 보내므로 악센트가 그대로 전달돼요.

  • SQLite

    sqlite3 clientes_2024.db < clientes_2024.sqlite.sql

    데이터베이스 파일이 없으면 새로 만들어져요. 변환기에서는 명령 없이 바로 쓸 수 있는 .sqlite 데이터베이스도 다운로드할 수 있어요.

  • SQL Server

    sqlcmd -S localhost -d mydb -f 65001 -i clientes_2024.sql_server.sql

    -f 65001은 파일을 UTF-8로 읽으므로 악센트와 ñ가 적힌 그대로 전달돼요.

  • Oracle

    sqlplus user@//localhost/mydb @clientes_2024.oracle.sql

    스크립트가 치환 변수를 꺼서(SET DEFINE OFF) 데이터 속 앰퍼샌드가 그대로 남아요.

명령줄은 파일을 SQLite 데이터베이스에 무료로 바로 불러와요. IntoSQL Pro에서는 명령줄과 데스크톱 앱으로 PostgreSQL, MySQL, MariaDB에도 불러올 수 있어요. SQL Server와 Oracle은 스크립트를 실행하세요.

Excel 파일과 데이터베이스별로 알아 둘 점

IntoSQL이 Excel 파일에서 읽는 내용

  • 위에 제목이나 메모가 있어도 머리글 행을 찾고, 맨 끝의 합계 행은 제외해요.
  • Excel 일련번호로 저장된 날짜는 1900 날짜 체계와 1904 날짜 체계 모두에서 실제 날짜가 돼요.
  • 00127처럼 앞에 0이 있는 코드는 텍스트로 유지돼요. 통합 문서에 시트가 여러 개 있으면 시트를 직접 고를 수 있어요.

데이터베이스별로 알아 둘 점

  • 파일을 연 다음 데이터베이스를 고르세요. 각 데이터베이스가 지원하는 타입을 사용해요.

데이터베이스별로 값의 종류가 저장되는 방식

값PostgreSQLMySQLMariaDBSQLiteSQL ServerOracle
예/아니요booleantinyint(1)tinyint(1)BOOLEANbitNUMBER(1)
정수integerintintINTEGERintNUMBER(10)
큰 정수bigintbigintbigintINTEGERbigintNUMBER(19)
소수numeric(p,s)decimal(p,s)doubledecimal(p,s)doubleNUMERIC(p,s)TEXTdecimal(p,s)NUMBER(p,s)
부동소수점double precisiondoubledoubleREALfloatBINARY_DOUBLE
날짜datedatedateDATEdateDATE
시각timetime(6)timetime(6)timeTIMEtimeINTERVAL DAY(0) TO SECOND
날짜와 시간timestampdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetime2TIMESTAMP
날짜, 시간과 시차timestamptzdatetime(6)datetimedatetime(6)datetimeDATETIMEdatetimeoffsetTIMESTAMP WITH TIME ZONE
텍스트textvarchar(n)textmediumtextlongtextvarchar(n)textmediumtextlongtextTEXTnvarchar(n)nvarchar(max)VARCHAR2(n CHAR)CLOB

Excel에서 SQL로 변환하기에 관한 질문

여기에 답이 없나요? 문의 페이지로 연락하시면 담당자가 답장해요. 문의 페이지

Excel 파일을 SQL로 어떻게 변환하나요?

이 페이지 위쪽의 변환기에 파일을 놓고 데이터베이스를 고르세요. PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, Oracle 중 각자 지원하는 형식을 써요. 스크립트를 다운로드해 데이터베이스에서 실행하세요.

통합 문서의 어느 시트가 변환되나요?

보이는 첫 번째 시트예요. 시트가 여러 개면 시트 옵션이 나타나서 다른 시트를 고를 수 있어요.

데이터베이스별로 어떤 형식을 쓰나요?

데이터베이스마다 달라요. 예/아니요 값은 PostgreSQL에서 boolean, MySQL과 MariaDB에서 tinyint(1), SQL Server에서 bit, Oracle에서 NUMBER(1)이에요. 이 페이지의 표에 값 종류별로 모두 나와 있어요.

앞자리 0이 유지되나요?

네. 00127 같은 코드는 모든 데이터베이스에서 텍스트로 유지되고 '00127'(으)로 쓰여서 0이 사라지지 않아요.

스크립트 없이 데이터를 불러올 수 있나요?

네. 명령줄은 SQLite에 무료로 불러와요. IntoSQL Pro에서는 데스크톱 앱과 명령줄로 PostgreSQL, MySQL, MariaDB에도 불러올 수 있어요. SQL Server와 Oracle은 스크립트를 실행하세요.

Excel 파일은 얼마나 커도 되나요?

브라우저는 통합 문서를 통째로 읽으므로, 한도는 브라우저가 이 페이지에 주는 메모리예요. 데스크톱 앱과 명령줄은 크기에 상관없이 통합 문서를 처리해요. Apple M4 노트북에서 명령줄은 100만 행, 117MB 통합 문서를 약 1초 만에 변환해요.