MySQLDump 형식
MySQLDump 형식
MySQLDump 형식은 MySQL 덤프 파일을 읽을 수 있게 해줘요. 덤프에서 단일 테이블에 속하는 INSERT 쿼리의 모든 데이터를 읽으며, 테이블이 둘 이상이면 기본적으로 첫 번째 테이블의 데이터를 읽습니다. 스키마 추론을 지원합니다.
출처: 문서
본문
| Input | Output | Alias |
|---|---|---|
| ✔ | ✗ |
설명 (Description)
ClickHouse는 MySQL 덤프 읽기를 지원합니다. 덤프에서 단일 테이블에 속하는 INSERT 쿼리의 모든 데이터를 읽습니다. 테이블이 둘 이상이면 기본적으로 첫 번째 테이블의 데이터를 읽어요.
이 형식은 스키마 추론을 지원합니다. 덤프에 지정된 테이블에 대한 CREATE 쿼리가 포함되어 있으면 그로부터 구조가 추론되고, 그렇지 않으면 INSERT 쿼리의 데이터에서 스키마가 추론됩니다.
사용 예시 (Example usage)
다음 SQL 덤프 파일이 있다고 가정해 볼게요:
dump.sql
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `test` (
`x` int DEFAULT NULL,
`y` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `test` VALUES (1,NULL),(2,NULL),(3,NULL),(3,NULL),(4,NULL),(5,NULL),(6,7);
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `test 3` (
`y` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `test 3` VALUES (1);
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `test2` (
`x` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
INSERT INTO `test2` VALUES (1),(2),(3);
다음 쿼리를 실행할 수 있어요:
쿼리
DESCRIBE TABLE file(dump.sql, MySQLDump)
SETTINGS input_format_mysql_dump_table_name = 'test2'
응답
┌─name─┬─type────────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ x │ Nullable(Int32) │ │ │ │ │ │
└──────┴─────────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
쿼리
SELECT *
FROM file(dump.sql, MySQLDump)
SETTINGS input_format_mysql_dump_table_name = 'test2'
응답
┌─x─┐
│ 1 │
│ 2 │
│ 3 │
└───┘
형식 설정 (Format settings)
input_format_mysql_dump_table_name 설정을 사용하여 데이터를 읽을 테이블의 이름을 지정할 수 있어요.
input_format_mysql_dump_map_columns 설정이 1로 설정되고 덤프에 지정된 테이블에 대한 CREATE 쿼리 또는 INSERT 쿼리의 컬럼 이름이 포함되어 있으면, 입력 데이터의 컬럼이 이름으로 테이블의 컬럼에 매핑됩니다. 이름을 알 수 없는 컬럼은 input_format_skip_unknown_fields 설정이 1로 설정되면 건너뜁니다.