MySQL 데이터베이스를 SQLite 데이터베이스로 내보내기
MySQL 데이터베이스를 SQLite 데이터베이스로 내보낼 수 있도록 도와주세요.
Github에는 Mysql을 Sqlite3 파일로 변환하는 환상적인 Linux 쉘 스크립트가 있습니다.서버에 mysqldump와 sqlite3를 모두 설치해야 합니다.효과가 좋다.
@quassy가 편집한 @user211698의 답변은 약속대로 작동합니다.이 작업을 자주 하기 때문에 bash 스크립트에 명령을 넣습니다.
#!/bin/bash
mysql_host=localhost
mysql_user=george
mysql_dbname=database
sqlite3_dbname=database.sqlite3
# dump the mysql database to a txt file
mysqldump \
--skip-create-options \
--compatible=ansi \
--skip-extended-insert \
--compact \
--single-transaction \
-h$mysql_host \
-u$mysql_user \
-p $mysql_dbname \
> /tmp/localdb.txt
# remove lines mentioning "PRIMARY KEY" or "KEY"
cat /tmp/localdb.txt \
| grep -v "PRIMARY KEY" \
| grep -v KEY \
> /tmp/localdb.txt.1
# mysqldump leaves trailing commas before closing parentheses
perl -0pe 's/,\n\)/\)/g' /tmp/localdb.txt.1 > /tmp/localdb.txt.2
# change all \' to ''
sed -e 's/\\'\''/'\'''\''/g' /tmp/localdb.txt.2 > /tmp/localdb.txt.3
if [ -e $sqlite3_dbname ]; then
mv $sqlite3_dbname $sqlite3_dbname.bak
fi
sqlite3 $sqlite3_dbname < /tmp/localdb.txt.3
자세한 코멘트는 https://gist.github.com/grfiv/b79ace3656113bcfbd9b7c7da8e9ae8d 에서 확인할 수 있습니다.
mysql2sqlite.톱 포스트에 기재되어 있는 sh는 Primary KEY 행에 잘 대응하지 않고, 후행도 쓰지 않는다.)CREATE 문을 완료합니다.
이게 내가 한 일이야.mysql 덤프를 실행했습니다.
mysqldump --skip-create-options --compatible=ansi --skip-extended-insert --compact --single-transaction -h<host> -u<user> -p<passwd> <database name> > localdb.txt
다음으로 GREP를 사용하여 PRIMAY KEY와 KEY를 삭제했습니다.
cat localdb.txt | grep -v "PRIMARY KEY' | grep -v KEY > localdb.txt.1
그런 다음 편집기를 사용하여 파일을 수정했습니다.키가 제거되면 다음과 같은 CREATE 문이 나타납니다.
CREATE ...
...,
)
그 후행은,제거해야 합니다.vi에서는 이 표현이 일치합니다. ,$\n)
그럼 다 바꿔야죠\'로.''
그런 다음 가져오기를 수행할 수 있습니다.
sqlite3 local.sqlite3 < localdb.txt.1
그리고 이것이 마지막입니다.나에게 맞는 프로그램을 하나도 못 찾았어요.이게 도움이 됐으면 좋겠어요.
sqlite 데이터베이스에 테이블 구조를 수동으로 작성했습니다.
그리고 다음 명령으로 데이터를 업로드했습니다.
mysqldump -u root {database} {table} --no-create-info --skip-extended-insert --complete-insert --skip-add-locks --compatible=ansi | sed "s/\\\'/''/g" |sqlite3 flora.db
두 데이터베이스의 다른 정점 부호화를 수정하기 위해 sed를 사용해야 했어요
개인적으로 저는 mysqldump의 단순한 사용을 좋아합니다만, 몇 가지 조정이 필요합니다(유닉스 기술 및 원하는 작업에 따라 다름).
예: PK가 있는 1개의 테이블(프로드)에 대해서만:
$ mysqldump mysql prods -u ME -pPASS --compatible ansi --compact |grep -v "^\/\*" |sqlite3 testme2.db
$ mysqldump mysql prods -u ME -pPASS --compatible ansi --compact |grep -v "^\/\*" |sqlite3 testme2.db
Error: near line 1: table "prods" already exists
Error: near line 7: UNIQUE constraint failed: prods.id, prods.ts
$ sqlite3 testme2.db '.schema'
CREATE TABLE "prods" (
"id" varchar(30) NOT NULL DEFAULT '',
"ts" int(11) NOT NULL DEFAULT '0',
"val" double DEFAULT NULL,
PRIMARY KEY ("id","ts")
);
좀 더 복잡한 것에 대해서는 래퍼를 쓰거나 Gist에서 이미 언급한 환상적인 Linux 쉘 스크립트를 사용하는 것이 좋습니다.
다음 웹 사이트에는 MySQL을 SQLite online으로 변환하는 온라인 도구가 있습니다.https://www.rebasedata.com/convert-mysql-to-sqlite-online
SQLite Database Browser라고 하는 훌륭한 경량 툴이 있어 SQLite 데이터베이스를 작성 및 편집할 수 있습니다.Android 앱용 데이터베이스 작성에 사용했습니다.데이터를 로드하기 위해 SQL 문을 실행할 수 있으므로 mySQL 데이터베이스에서 데이터를 내보내는 경우 이 도구를 사용하여 데이터를 가져올 수 있습니다.다음 링크입니다.http://sqlitebrowser.sourceforge.net/
데이터를 내보내다
mysqldump database > database.sql
를 사용하여 데이터를 Import합니다.
sqlite3 database < database.sql
-u(사용자) 및 -p(패스워드) 옵션이 필요할 수 있습니다.
언급URL : https://stackoverflow.com/questions/5164033/export-a-mysql-database-to-sqlite-database
'source' 카테고리의 다른 글
| Mysql 오류 1452 - 하위 행을 추가하거나 업데이트할 수 없습니다. 외부 키 제약 조건이 실패합니다. (0) | 2022.12.31 |
|---|---|
| bootstrap-vue를 사용한 재스트 실행 (0) | 2022.12.31 |
| SQL Chemy: 실제 쿼리 인쇄 (0) | 2022.12.21 |
| MySQL에서 외부 키 제약을 일시적으로 해제하려면 어떻게 해야 합니까? (0) | 2022.12.21 |
| Typescript d.ts 파일에 정의된 인터페이스 속성 유형을 재정의하고 있습니다. (0) | 2022.12.21 |