반응형
NN 및 MySQL이 잘릴 수 있는 기타 특수 문자
데이터베이스의 테이블을 라틴 문자(특히 "ñ")가 포함된 행으로 채우려고 합니다.이 목록은 제가 csv 파일로 변환한 엑셀에서 가져온 것입니다.
CSV 파일의 내용은 다음과 같습니다.
"1619","137601000","라스피냐스 시", "메트로 마닐라", "NCR", "수도권", "MM""1620","137602000","마카티 시", "메트로 마닐라", "NCR", "수도권", "MM""1627","137604000","파라냐크 시", "메트로 마닐라", "NCR", "수도권", "MM"
다음 명령을 사용하여 이 목록을 대상 테이블에 로드합니다.
LOAD DATA LOCAL INFILE '/my/path/to/file.csv' INTO TABLE mytable FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
또, 부하 스테이트먼트에 CARTER SET를 추가하려고 했지만, 같은 결과가 나왔습니다.
LOAD DATA LOCAL INFILE '/my/path/to/file.csv' INTO TABLE mytable CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
그러나 로드 후 테이블 내용을 확인해보니 "NN"이 포함된 필드가 잘립니다.
| 1619 | 137601000 | CITY OF LASPI | METRO MANILA | NCR | 수도권 | M || 1620 | 137602000 | CITY OF MAKATI | 메트로 마닐라 | NCR | 수도권 | MM || 1627 | 137604000 | CITY OF PARA | METRO MANILA | NCR | 수도권 | M |
이 자원에 대해 몇 가지 제안을 시도했지만 아직 성공하지 못했다.
표의 내용은 표현상의 문제일 수 있기 때문에 추출하려고 했습니다만, 「ñ」라고 하는 필드가 정말로 잘렸습니다.
다음은 이 문제를 해결하는 데 도움이 될 수 있는 정보입니다.
다음 명령으로 데이터베이스를 작성했습니다.
CREATE DATABASE myDB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci
그리고 내 테이블은 이렇게 되어있어:
CREATE TABLE `location` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`code` int(11) NOT NULL,
`city` varchar(60) NOT NULL,
`province` varchar(30) NOT NULL,
`region` varchar(4) NOT NULL,
`regionname` varchar(40) NOT NULL,
`area` varchar(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
OS의 종류와 버전
CentOS Linux release 7.1.1503 (Core)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
CentOS Linux release 7.1.1503 (Core)
CentOS Linux release 7.1.1503 (Core)
MySQL 바리안트 및 버전
- mysql Ver 15.1 Distributed 5.5.41-MariaDB(리딩라인 5.1을 사용하는 Linux(x86_64)용)
표 열 문자 설정
+-------------+--------------------+-----------------+| column_name | character_set_name | collation_name |+-------------+--------------------+-----------------+| id | NULL | NULL || code | NULL | NULL || city | utf8 | utf8_cs_ci || 주 | utf8 | utf8_cs_ci || region | utf8 | utf8_ci || regionname | utf8 | utf8_ci || area | utf8 | utf8_ci |+-------------+--------------------+-----------------+
내 데이터베이스 설정
+-------------+----------------------------------------------------------------------------------------------+| 데이터베이스 | 데이터베이스 작성 |+-------------+----------------------------------------------------------------------------------------------+| myDbName | CREATE DATABASE 'myDbName' /*!40100 DEFAULT CHARGER SET utf8_unicode_ci */ |+-------------+----------------------------------------------------------------------------------------------+
잘라내는 원인은 보통 다음과 같습니다.
- 클라이언트는 latin1로 인코딩된 악센트 문자를 사용하고 있었습니다.
SET NAMES utf8
유효하게 되어 있었습니다.INSERT
(또는LOAD DATA
고객님의 경우)
즉, csv 파일은 실제로 utf8 형식이 아닙니다.다른 것을 시도해 보세요.CHARACTER SET
에서LOAD DATA
아마latin1
.
언급URL : https://stackoverflow.com/questions/36002576/%c3%91-and-possibly-other-special-character-being-truncated-mysql
반응형
'IT' 카테고리의 다른 글
데이터베이스 테이블에는 프라이머리 키가 없을 수 있습니까? (0) | 2022.11.07 |
---|---|
JavaScript의 키 값을 기반으로 어레이 내의 객체 검색 및 삭제 (0) | 2022.11.07 |
InnoDB의 손상된 데이터 구조를 수정하는 방법 (0) | 2022.11.07 |
집약 쿼리의 프로시저 표시 또는 저장 (0) | 2022.11.07 |
스캐너가 next() 또는 nextFoo()를 사용한 후 nextLine()을 건너뜁니다. (0) | 2022.11.07 |