2017-01-18 12 views
-1

私は大きなcsvファイルを約5GB持っています。私はそれをヘッダー付きの小さなファイルに分割したいと思います。私はstackoverflowで与えられた例を試したが、PHPのメモリの限界は、完全に動作していないとまた、各ファイルにヘッダーを追加し、どのようにCSVのヘッダーを取得するdoesnt?PHPを使用して同じヘッダーで大きなcsvファイルを分割するにはどうすればよいですか?

+0

CSVにはヘッダーが1つしかありません。そうでない場合は、無効なcsvデータがあります。したがって、ヘッダーが1つしかない場合は、ファイルを1行ずつ読み込み(fopen()、fread())、最初の行をヘッダーとして収集します。そして、次の行を読むのは新しいファイル(fwrite())に直接書きますが、収集されたヘッダを最初の行として忘れてはいけません。 X線が書き込まれている場合は、書き込み用に次のファイルを閉じて開きます。 fread()とfwrite()の使用のために、ここではメモリ制限はありません。 – JustOnUnderMillions

答えて

0

あなたは、次の手順に従います。

1) 最初のファイルは、あなたは、次のコマンドを使用して、次のcsvファイルに少ない行をコピーすることができ、ヘッダーが含まれている場合: のGet-コンテンツ「C:\ start.csv "|選択します。アウトファイル "C:\ stop.csv"

参照リンク:toSelectFirstFewLinesOfCSVFile

2)その後に応じてテーブルを作成します。

3))は、バルク・ロード用LOAD DATAのINFILEコマンドの(そのテーブルにCSVデータをロード

4)このため、シェル・スクリプトを作成し、より長い時間のために実行することができる、コマンドを介して実行するクエリを使用。

(注:あなたは、SETをセットでnet_read_timeout = 99999することができます; SET net_write_timeout = 99999;長いMySQLの接続のためのこれらの接続を。)

5)シェルスクリプトを呼び出します。

これは動作するはずです。

+0

実際に私の目的は、このcsvファイルをmysqlにロードすることですが、ファイルサイズのせいで、読み込みができません.Csvファイルのヘッダーを取得する方法を教えてください。 – vishal

+0

あなたはLinuxシステムを使用していますか? –

+0

私はLinuxの共有ホスティングを利用しています。 – vishal

関連する問題