
SQLite3 から MySQL への迅速かつ簡単な移行
SQLite3 データベースを MySQL に移行するための直接的なアプローチを求めている場合は、そうではありません。一人で。データを手動で変換しようとすると、多くの場合、インポートされたデータの正確性が不確かになります。この特定の変換用に確立されたライブラリはありませんが、2 つのファイル形式の違いに基づいたガイダンスを提供できます。
構文の違い
- SQLite3 では次のものが使用されます。 「BEGIN TRANSACTION」と「COMMIT」は、MySQL では省略されています。
- MySQL では必須です。スキーマ定義では一重引用符の代わりに二重引用符を使用します。
- SQLite3 の二重引用符とは異なり、MySQL は "INSERT INTO" 句の文字列に一重引用符を使用します。
- 文字列のエスケープは 2 つのシステム間で異なります。
- MySQL はブール値に 1 と 0 を使用しますが、SQLite3 は「t」を使用しますおよび 'f.'
- 自動インクリメント機能は、SQLite3 では「AUTOINCREMENT」、MySQL では「AUTO_INCREMENT」という名前です。
データ移行用の Perl スクリプト
これらの違いに対処し、特定の環境で正常にテストされた、修正された Perl スクリプトを提供します。データセット。ただし、特定のデータに合わせてカスタマイズする必要がある場合があります:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #! /usr/bin/perl
while ( $line = <>){
if (( $line !~ /BEGIN TRANSACTION/) && ( $line !~ /COMMIT/) && ( $line !~ /sqlite_sequence/) && ( $line !~ /CREATE UNIQUE INDEX/)){
if ( $line =~ /CREATE TABLE \"([a-z_]*)\"(.*)/i){
$name = ;
$sub = ;
$sub =~ s/\"
$line = "DROP TABLE IF EXISTS $name ;\nCREATE TABLE IF NOT EXISTS $name $sub \n";
}
elsif ( $line =~ /INSERT INTO \"([a-z_]*)\"(.*)/i){
$line = "INSERT INTO \n";
$line =~ s/\"/\\"/g;
$line =~ s/\"/\'/g;
} else {
$line =~ s/\ '\'/\\' /g;
}
$line =~ s/([^\'])\'t\'(.)/THIS_IS_TRUE/g;
$line =~ s/THIS_IS_TRUE/1/g;
$line =~ s/([^\'])\'f\'(.)/THIS_IS_FALSE/g;
$line =~ s/THIS_IS_FALSE/0/g;
$line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
print $line ;
}
}
|
ログイン後にコピー
以上がSQLite3 データベースを MySQL に簡単に移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。