mysqldump を使用して、データベースとテーブルを別々のファイルにダンプできます。
私の質問は、mysqldump 内でこれらのテーブル ファイルを小さな部分に分割する方法はありますか?
1 つの 10 GB の .sql ファイルの代わりに、同じテーブルに対して 10 個の 1 GB の .sql ファイルを取得しますか?
MySQL Dump を使用してクエリからデータを取得できますが、データを特定のサイズのチャンクに分割する必要がある場合、これを管理するのは難しいといつも思っています。
1Gb ファイルが必要なので、テーブルを 1Gb セグメントに分割する方法を次に示します。
使用しましたINTO OUTFILE
が、MySQL ダンプもこの段階で使用できます
SELECT * FROM table
ORDER BY adminid ASC
INTO OUTFILE 'c:/table.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY
Windows を使用している場合、これには適切な分割ユーティリティが実際に欠けているため、GNU Core Utilities バンドルhttp://gnuwin32.sourceforge.net/packages/coreutils.htmをお勧めします
split
インストール後、コマンドプロンプトから使用できます
cd C:\Program Files (x86)\GnuWin32\bin
split -C 1024m -d c:\table.csv c:\table.part_
Linux を使用している場合は、優れた分割ユーティリティに既にアクセスできます。
それらをエクスポートする場合、おそらくある時点でそれらを再度インポートする必要があります。mysqlimport はインポート先のテーブル名を見つけようとするため、行末の .part_ が重要です。テーブルを分割するために使用できますが、複数のファイルを同じデータベーステーブルにインポートできます。
これらは、次を使用してインポートできます
mysqlimport --local --compress --user=username --password=password --host=dbserver.host --fields-terminated-by=, --fields-optionally-enclosed-by="\"" --lines-terminated-by="\n" databasename c:\table.csv
--local
それ以外の場合、mysqlimport はリモート ホスト上のファイルを検索する必要があります。
--compress
多くの帯域幅を節約するため、非常に重要です