일단 mysqldump.exe를 활용하여 dump파일, sql 파일을 뽑아내어 이를 INSERT하려고 하였다.
mysql.exe --protocol=tcp --host=XXX --user=userName --port=3306 --default-character-set=utf8 --comments < "import 하고자 하는 SQL Query"
ERROR 1227 (42000) at line 20: Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation
DEFINER
가 지정된 sql 파일을 허용하지 않기 때문이라고 한다. 따라서 linux의 sed 's/\sDEFINER=
[^`]@
[^`]//g' -i <FILENAME>.sql
명령어를 사용하여 DEFINER
가 명시된 부분을 삭제SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
-- SET @@SESSION.SQL_LOG_BIN= 0;
-- SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';
-- SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
But 위의 방식을 사용하니 Datatype이 Point였던 Blob 데이터가 utf-8로 들어가게 되면서, IMPORT 시에 아래와 같은 오류가 발생
ERROR 1416 (22003) at line 51: Cannot get geometry object from data you send to the GEOMETRY field
따라서 --hex-blob=TRUE 을 사용하여 Blob 데이터를 16진수로 뽑아냄
mysqldump.exe --host=XXX --port=3306 --default-character-set=utf8 --user=admin --protocol=tcp --column-statistics=FALSE --hex-blob=TRUE “schema_name" "table_name"
참조