おそらくそれをインポートする必要さえありません。engine=CSVでテーブルを作成できます。
mysql> create table mycsv(id int not null)engine = csv;
クエリOK、影響を受ける行は0(0.02秒)
次に、データディレクトリに移動してmycsv.CSVを削除し、CSVファイルをmycsv.CSVとして移動/コピー/シンボリックリンクします。mysqlに戻って入力するflush tables;
と、準備が整います。(注:動作しない可能性があるため、最初\r\n
に変換する必要がある場合があります\n
)。
InnoDBを使用している場合、問題は、挿入されたすべての行の各取り消しログエントリを追跡する必要があり、これには多くのリソースが必要であり、非常に時間がかかることです。メモリ内のほとんどの取り消しログ追跡を実行できるように、小さなバッチで実行することをお勧めします。読み込みの途中でctrl-cを実行し、ロールバックする必要がある場合に備えて、取り消しログがあります。そのバッチがロードされた後は、それを追跡する必要はありません。一度にすべてを行う場合は、それらのすべての取り消しログエントリを追跡する必要があり、おそらくディスクに移動する必要があります。これはキラーです。
データを分析するために1つの長いプログラムを実行する場合のように、行レベルのロックを実行しないことがわかっている場合は、データにmyisamを使用することを好みます。テーブルはロックされていますが、実行する必要があるプログラムは1つだけです。さらに、いつでもマージテーブルを使用できます。それらはmyisamテーブルを取り、それらを1つのテーブルにグループ化できます。各テーブルが1か月のデータであるログファイルに対してこれを行うのが好きです。それから私は1年間のマージテーブルを持っています。マージテーブルはデータをコピーせず、各myisamテーブルを指すだけです。