답변:
GitHub에 mysql2sqlite.sh 스크립트가 있습니다.
헤더에 설명 된대로 스크립트는 다음과 같이 사용할 수 있습니다.
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
대안
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man mysql
또는man mysqldump
다음 은 변환기 목록입니다 . ( archive.today의 스냅 샷 )
Windows에서도 작동하지만 거의 언급되지 않는 대체 방법은 특정 데이터베이스 차이를 추상화하는 ORM 클래스를 사용하는 것입니다. 예를 들어 PHP ( RedBean ), Python (Django의 ORM 레이어, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) 등에서 이러한 정보를 얻을 수 있습니다.
즉, 다음과 같이 할 수 있습니다.
Sequel (Ruby ORM)에는 데이터베이스를 처리하기위한 명령 줄 도구가 있습니다. Ruby가 설치되어 있어야합니다.
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysql
와gem install sqlite3
gem install pg
postgres db로 또는 postgres db로 변환하려면 속편에 메이저 db 용 어댑터가 있어야합니다
mysql
에 mysql2
당신이 사용하는 경우mysql2
ruby-dev
이러한 네이티브 gem 패키지를 빌드 하려면 패키지가 필요 합니다.
모든 DB 스키마를 변환 할 수있는 것은 아닙니다. MySQL은 SQLite보다 더 복잡하고 기능이 풍부합니다. 그러나 스키마가 충분히 간단하다면 SQL 파일에 덤프하여 SQLite DB로 가져 오거나로드 할 수 있습니다.
20GB 이상의 MySQL 데이터베이스를 SQLite로 변환해야 할 때 약 2 일 전에 동일한 문제에 직면했습니다. 결코 쉬운 일이 아니었고 저는 이 작업을 수행하는 이 Python 패키지 를 작성 했습니다 .
Python으로 작성되는 장점은 크로스 플랫폼 (셸 / bash 스크립트와는 다름)이며 pip install
Windows에서도 모두 쉽게 설치할 수 있다는 것 입니다. 처리중인 데이터의 생성기와 청킹을 사용하므로 메모리 효율성이 매우 높습니다.
또한 대부분의 데이터 유형을 MySQL에서 SQLite 로 올바르게 변환 하기 위해 노력했습니다 .
이 도구는 철저한 테스트를 거쳐 Python 2.7 및 3.5+ 에서 작동합니다 .
명령 줄을 통해 호출 할 수 있지만 일부 더 큰 Python 오케스트레이션에 포함 할 수있는 표준 Python 클래스로 사용할 수도 있습니다.
사용 방법은 다음과 같습니다.
Usage: mysql2sqlite [OPTIONS]
Options:
-f, --sqlite-file PATH SQLite3 database file [required]
-d, --mysql-database TEXT MySQL database name [required]
-u, --mysql-user TEXT MySQL user [required]
-p, --mysql-password TEXT MySQL password
-h, --mysql-host TEXT MySQL host. Defaults to localhost.
-P, --mysql-port INTEGER MySQL port. Defaults to 3306.
-c, --chunk INTEGER Chunk reading/writing SQL records
-l, --log-file PATH Log file
-V, --vacuum Use the VACUUM command to rebuild the SQLite
database file, repacking it into a minimal amount
of disk space
--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQL
database. This can be useful in situations where
multiple queries, with small result sets, need to
be combined or computed with each other.
--help Show this message and exit.
.sql
덤프 파일로 작업 할 수있는 방법이 있습니까? 아니면 설치된 MySQL 데이터베이스에 연결해야합니까?
Sqlite에는 공식적으로 변환 도구 목록이 있습니다.
완벽한 솔루션을 찾았습니다
먼저 다음 스크립트가 필요합니다 ( 'mysql-to-sqlite.sh'라는 파일에 저장).
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <dumpname>"
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' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/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
else
echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi
그런 다음 데이터베이스 사본을 덤프합니다.
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
이제 변환을 실행하십시오.
you@prompt:~$ mysql-to-sqlite.sh dumpfile
그리고 모든 것이 잘되면 sqlite3를 통해 사용할 수있는 dumpfile.db가 있어야합니다.
you@prompt:~$ sqlite3 dumpfile.db
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
dg_cities dg_forms dg_surnames
dg_counties dg_provinces dg_user_accounts
dg_countries dg_provinces_netherlands
dg_first_names dg_states
이를 수행하는 방법에는 여러 가지가 있습니다. 나는 또한이 문제가 있었고 많이 검색 한 다음 MySQL을 SQLite로 변환하는 간단한 방법을 얻었습니다.
다음과 같이하세요:
먼저 SQLite DB 브라우저를 설치해야합니다 (테이블과 데이터를보기에 매우 작고 빠름)
메모장에서 MySQL 파일을 열거 나 메모장에서 열면 좋을 것입니다 ++
첫 번째 추가 줄에 정보 또는 쿼리가 포함 된 경우 제거하고 저장합니다.
SQLite DB Browser, Create Database, Tables 및 동일한 유형을 MySQL 데이터베이스에있는 것과 같이 엽니 다.
SQLite DB Browser의 Menu Bar에서 File-> Import data MySQL File을 선택합니다.
경고 대화 후 SQLite로 쉽게 변환됩니다.
오류가 발생하면 MySQL 파일에 더 많은 추가 줄을 제거하십시오.
평가판으로 MySQL을 SQLite 변환기 소프트웨어에 설치할 수도 있지만 변환을 위해 제공하는 정보는 평생입니다.
Mac 을 실행하는이 문제에 대한 나의 해결책 은
속편 설치
$ gem install sequel
여전히 필요한 경우
% gem install mysql sqlite3
그런 다음 Sequel doc bin_sequel.rdoc를 기반으로 다음을 사용했습니다 (데이터베이스 복사 참조).
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
윈도우 사용자는 윈도우 솔루션 루비와 속편을 설치할 수 있습니다.
이 스레드에서 여러 가지 방법을 시도했지만 아무것도 효과가 없었습니다. 그래서 여기에 새로운 솔루션이 있습니다. 또한 매우 간단합니다.
sqlite
데이터베이스를 만드는 데 필요한 모든 쿼리 가 포함 된 txt 파일이 저장 됩니다.이제 SQLite 데이터베이스가 있습니다.
에서 변환 도구의 목록을 나는 발견 Kexi을 . 다양한 DB 서버 (MySQL 포함)에서 SQLite로 가져 오는 UI 도구입니다. 일부 데이터베이스를 가져올 때 (예 : MySQL에서) Kexi 형식으로 저장합니다. Kexi 형식은 '네이티브'SQLite 형식입니다. 따라서 kexi 파일을 복사하고 데이터를 sqlite 형식으로 만드십시오.
데이터베이스 파일을 받았지만 올바른 서버 (SQLite 또는 MySQL)를 설치하지 않은 경우 다음 도구를 사용해보십시오. https://dbconvert.com/sqlite/mysql/ 평가판을 사용하면 각 테이블의 처음 50 개 레코드를 변환 할 수 있습니다. , 나머지 데이터에는 워터 마크가 표시됩니다. 이것은 Windows 프로그램이며 실행중인 데이터베이스 서버로 덤프하거나 출력을 .sql 파일로 덤프 할 수 있습니다.