1

テーブルを MSSQL Server から MySql に移行する必要があります。問題は、テーブルが非常に大きく (6,500 万レコード)、プロセス全体に時間がかかりすぎることです。物事をスピードアップする方法を知っている人はいますか? これを改善できる便利なツールはありますか?

4

7 に答える 7

1

これが、800KレコードテーブルをMSSqlServerからMySQLに移行する方法です。

表形式でデータを表示するクエリを作成します。

SELECT [PostalCode] + ' ' +
  [StateCode] + '   ' +
  [Latitude] + '    ' +
  [Longitude] + '   ' +
  [CityName]  
FROM [dbo].[PostalCode]

SQL Server Management Studioを使用してクエリを実行し、結果をファイルに出力することを選択します(メニュー:[クエリ]->[結果の宛先]->[結果のファイル])

ファイル名は、MySQLのテーブルの名前である必要があります。ファイル拡張子は関係ありません。

次に、mysqlimport.exe(Windowsの場合)を使用してデータをインポートします(テーブルはMySQLデータベースに存在する必要があります):

mysqlimport.exe --user=user_name
  --columns=postalcode,statecode,latitude,longitude,cityname 
  --ignore-lines=2 databaseName pathToFile

インポート後、ファイルの最後にゴミが含まれていたため、テーブルの最後の2つのレコードを削除する必要がありました:(818193行が影響を受けました)

800Kの場合、非常に高速です。エクスポートに10秒、次にインポートに10秒です。

お役に立てれば。

于 2009-07-31T22:28:44.870 に答える
1

一度だけ行う必要がありますか?最適化に時間をかけすぎないでください。完了するまで待ってから先に進んでください。

もっと頻繁に行う必要がありますか?次に、現在使用しているツール/テクニックを詳しく説明すると役立ちます。

于 2008-10-23T12:41:05.460 に答える
0

SQL Server のインポート/エクスポート ウィザードで生成できる SSIS/DTS パッケージを使用して、mssql から mysql にデータを取得できるかどうか試してください。(適切な OLEDB/ADO プロバイダーを使用して MySQL に接続します。

金曜日に家に帰るときに開始し、週末の後にもう一度チェックしてください ;)

于 2008-10-23T19:23:00.250 に答える
0

最初に mysql テーブルにインデックスがないことを確認してください。ロードが完了したら、それらを追加します。

于 2008-10-23T17:56:49.520 に答える
0

my.ini ファイルで次のようなステートメントを使用して、挿入を開始する前に、MySQL テーブル ストレージ ファイルが十分な大きさであることを確認してください。

innodb_data_file_path=ibdata1:1000M:autoextend
于 2008-10-23T18:01:43.160 に答える
0

列にインデックスが含まれていないことを確認し、インポート用の外部キー (テーブル タイプに InnoDB を使用している場合) を削除します。

于 2008-10-23T19:27:26.640 に答える
0

データをテキストにエクスポートしてから、mysql load ステートメントを使用できます。

データローカル'/somefolder/text_file_with_data.txt'ファイルをテーブル some_table にロードします フィールドは次の'\t'行で終了します'\n'

または、データ ファイルを mysql サーバーに置くと、次のことができます。

データ infile'/somefolder_on_the_mysql_server/text_file_with_data.txt'をテーブル some_table にロードします フィールドは次の'\t'行で終了します'\n'

エクスポートする mssql の構文がわかりません

いつでも 10,000 または 100,000 のセットでエクスポートできます。

于 2008-10-23T12:43:25.550 に答える