>  기사  >  데이터 베이스  >  MySQL 덤프 파일을 SQLite 가져오기 가능 형식으로 변환하는 방법은 무엇입니까?

MySQL 덤프 파일을 SQLite 가져오기 가능 형식으로 변환하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-28 18:16:30527검색

 How to Convert MySQL Dump Files into SQLite-Importable Format?

MySQL 덤프 파일을 SQLite 가져오기 가능 형식으로 변환

문제:

내보낸 MySQL 덤프 SQL 파일을 SQLite3으로 가져오기 sqlite3 도구를 직접 사용하여 데이터베이스를 만드는 것은 성공하지 못합니다. 이 문제를 어떻게 해결할 수 있습니까?

해결책:

다음 셸 스크립트는 MySQL 덤프 파일을 SQLite3으로 가져올 수 있는 형식으로 변환할 수 있습니다.

#!/bin/sh
if [ "x" == "x" ]; then
   echo "Usage:  <dumpname>"
   exit
fi
cat  |
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=;
     s/\'\''/'\'\''/g;
     s/\n/\n/g;
     s/\),\(/\);\n$a\(/g;
  }
  ' > .sql
cat .sql | sqlite3 .db > .err
ERRORS=`cat .err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "Conversion completed without error. Output file: .db"
  rm .sql
  rm .err
    rm tmp
else
   echo "There were errors during conversion.  Please review .err and .sql for details."
fi

설명:

  • 스크립트는 먼저 MySQL 덤프 파일에서 키 제약 조건 및 문자 집합과 같이 SQLite3으로 가져올 때 문제를 일으킬 수 있는 특정 줄을 필터링합니다.
  • 그런 다음 smallint 및 int와 같은 특정 데이터 유형을 정수로 변환하고 부호 없는 수정자를 제거합니다.
  • 스크립트는 enum 데이터 유형을 varchar(255)로 변환하고 모든 항목을 제거합니다. update 절.
  • SQL 문을 시작 및 커밋 트랜잭션 블록으로 래핑합니다.
  • 스크립트는 이스케이프된 줄 바꿈 문자를 수정하고 여러 행이 있는 INSERT 문을 개별 문으로 분할합니다.
  • 마지막으로 수정된 SQL 파일을 SQLite3 데이터베이스로 가져옵니다.

위 내용은 MySQL 덤프 파일을 SQLite 가져오기 가능 형식으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.