"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL 덤프 SQL 파일을 SQLite3 데이터베이스로 변환하는 방법은 무엇입니까?

MySQL 덤프 SQL 파일을 SQLite3 데이터베이스로 변환하는 방법은 무엇입니까?

2024-11-08에 게시됨
검색:608

How to Convert a MySQL Dump SQL File to a SQLite3 Database?

MySQL 덤프 SQL을 Sqlite3 DB로 변환

MySQL 덤프 SQL 파일을 SQLite3 데이터베이스로 가져오려면 호환성을 보장하기 위해 변환이 필요합니다.

제공된 쉘 스크립트는 덤프를 변환하는 자동화된 방법을 제공합니다. 파일:

#!/bin/sh
# Usage: $0 

if [ "x$1" == "x" ]; then
   echo "Usage: $0 "
   exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
  if (/^(INSERT. ?)\(/) {
     $a=$1;
     s/\\'\''/'\'\''/g;
     s/\\n/\n/g;
     s/\),\(/\);\n$a\(/g;
  }
  ' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "Conversion completed without error. Output file: $1.db"
  rm $1.sql
  rm $1.err
    rm tmp
else
   echo "There were errors during conversion.  Please review $1.err and $1.sql for details."
fi
; 그 다음에 echo "사용법: $0 " 출구 fi 고양이 $1 | grep -v ' 키 "' | grep -v ' 고유 키 "' | grep -v ' 기본 키 ' | sed '/^SET/d' | sed 's/ unsigned / /g' | sed 's/ auto_increment/ 기본 키 자동 증가/g' | sed 's/ smallint([0-9]*) / 정수 /g' | sed 's/tinyint([0-9]*) / 정수 /g' | sed 's/ int([0-9]*) / 정수 /g' | sed 's/ 문자 세트 [^ ]* / /g' | sed 's/ enum([^)]*) / varchar(255) /g' | 업데이트 시 sed 's/ [^,]*//g' | perl -e 'local $/;$_=s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' | 펄 -pe ' if (/^(INSERT. ?)\(/) { $a=$1; s/\\'\''/'\'\''/g; s/\\n/\n/g; s/\),\(/\);\n$a\(/g; } ' > $1.sql 고양이 $1.sql | sqlite3 $1.db > $1.오류 오류=`cat $1.err | 화장실 -l` if [ $ERRORS == 0 ]; 그 다음에 echo "오류 없이 변환이 완료되었습니다. 출력 파일: $1.db" rm $1.sql rm $1.err RM TMP 또 다른 echo "변환 중 오류가 발생했습니다. 자세한 내용은 $1.err 및 $1.sql을 검토하세요." fi

스크립트는 다음 변환을 수행합니다.
  • 중복 키 정의를 제거합니다.
  • 해당하는 경우 필드를 서명되지 않음으로 설정합니다.
  • auto_increment 필드를 설정합니다. 기본 키 자동 증가로.
  • 정수 유형을 SQLite의 해당 유형으로 변환합니다(smallint, Tinyint, int는 정수가 됨).
  • 문자 집합을 제거합니다.
  • 열거형 유형을 varchar(255)로 변환합니다.
  • 업데이트 트리거에 대한 집합 참조를 제거합니다.
  • SQLite 호환성을 위해 여러 행 삽입을 개별 삽입으로 변환합니다.
  • 변환된 SQL을 트랜잭션으로 래핑합니다. 안전.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3