私は非常に単純なデータベース(いくつかの単純なテーブルのみ)を持っていますが、かなり大きい(SQLiteのGiBについて)データベースを持っています。それを開発するとき、私は非常に標準的な列タイプのみを使用するように最善を尽くしました: INT, DOUBLE, CHAR, VARCHAR
(ただし、これらは SQL Server のものNCHAR
でありNVARCHAR
、SQLite の UTF-8CHAR
およびの代わりに使用されVARCHAR
ます)。
データベースを SQLite から SQL Server に、またはその逆に変換する最も簡単な方法は何ですか?
ソースからすべての DDL を生成するのではなく、手動でターゲット データベースを定義してもかまいませんが、データ移行を自動化しようとしています。
アップデート:
私が見つけた最も簡単な方法は、SQLiteからエクスポートすることです
> sqlite3 mydb.sqlite
sqlite> .headers off
sqlite> .mode csv
sqlite> .output mytable.csv
sqlite> select * from `mytable`;
次に引用符を削除します
tr -d \" < mytable.csv > mytable-plain.csv
Unix (LF 行末) から DOS (CR+LF 行末) テキスト形式に変換します ( tr
Unix ツールと同様に Unix を出力します)
unix2dos mytable-plain.csv
それをSQL ServerにインポートしますBULK INSERT
BULK
INSERT [dbo].[mytable]
FROM 'c:\mytable-plain.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
GO
同じ空のテーブルが SQL Server スキーマに既に作成されていると仮定します。
cygwin
tr
およびunix2dos
Windowsで実行する必要があります。
0.5 GiB の CSV ファイルを SQL Server にインポートするのに (Core 2 Duo ラップトップで) 30 分かかりました。
もっと簡単な方法があると今でも信じています。おそらく、ODBC を介して別のデータ ソースにクエリを実行する T-SQL 関数や、ソース データベースから選択してターゲットに挿入するプログラムが存在する可能性があります (まだ誰もそのようなものを作成していないとは信じられません)。