0

私は非常に単純なデータベース(いくつかの単純なテーブルのみ)を持っていますが、かなり大きい(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 行末) テキスト形式に変換します ( trUnix ツールと同様に 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 スキーマに既に作成されていると仮定します。

cygwintrおよびunix2dosWindowsで実行する必要があります。

0.5 GiB の CSV ファイルを SQL Server にインポートするのに (Core 2 Duo ラップトップで) 30 分かかりました。

もっと簡単な方法があると今でも信じています。おそらく、ODBC を介して別のデータ ソースにクエリを実行する T-SQL 関数や、ソース データベースから選択してターゲットに挿入するプログラムが存在する可能性があります (まだ誰もそのようなものを作成していないとは信じられません)。

4

0 に答える 0