次の形式の 100,000 レコードを含む TXT ファイルがあります:
列1 列2 列3 列4 列5
a 00003131 0 0 加法#1 加法#1 加法#1
a 00003356 0 0 初期#1
a 00003553 0 0 新興#2 新興#2
a 00003700 0.25 0 反動的な#1
……………………背後には 100,000 行があります………………
要件は、それをデータベースにインポートすることです。データテーブルの構造は
word_id 自動増分
word 【adductive#1 adducting#1 adducent#1】このTXTレコードは3つのSQLレコードに変換する必要があります
値 = 3 列目 - 4 列目; =0 の場合、このレコードはスキップされ、データテーブルに挿入されません
[php]
$file = 'words.txt';//10W レコードの TXT ソース ファイル
$lines = file_get_contents($file);
ini_set('memory_limit', '-1');//Mem サイズを制限しないでください。制限しないと、エラーが報告されます
$line=explode("n",$lines);
$i=0;
$sql="words_sentiment (word,senti_type,senti_value,word_type) の値を挿入します
foreach($line as $key =>$li)
{
$arr=explode(" ",$li);
$senti_value=$arr[2]-$arr[3];
If($senti_value!=0)
If($i>=20000&&$i
$mm=explode(" ",$arr[4]);
FOREACH ($ MM AS $ M) // [Adductive#1 AdDucting#1 Adducent#1] この TXT レコードは 3 つの SQL レコードに変換する必要があります {
$nn=explode("#",$m);
$word=$nn[0];
$sql.="("$word",1,$senti_value,2),";//ここで、単語には一重引用符 (ジャックなど) が含まれる可能性があるため、単語を含めるには二重引用符を使用する必要があることに注意してください。 (エスケープに注意)
$i++;
}
// $i をエコーします。
$sql=substr($sql,0,-1);//最後のカンマを削除します
// $sql をエコーします。
File_put_contents('20000-25000.txt', $sql); //一度に 5000 エントリのデータベースをバッチインポートすると、max_execution_time が足りなくなり失敗します
?>
$file = 'words.txt';//10W レコードの TXT ソース ファイル
$lines = file_get_contents($file);
ini_set('memory_limit', '-1');//Mem サイズを制限しないでください。制限しないとエラーが報告されます
$line=explode("n",$lines);
$i=0;
$sql="words_sentiment (word,senti_type,senti_value,word_type) の値に挿入 ";
foreach($line as $key =>$li)
{
$arr=explode(" ",$li);
$senti_value=$arr[2]-$arr[3];
if($senti_value!=0)
{
If($i>=20000&&$i
{
$mm=explode(" ",$arr[4]);
FOREACH ($ MM AS $ M) // [Adductive#1 AdDucting#1 Adducent#1] この TXT レコードは 3 つの SQL レコードに変換する必要があります {
$nn=explode("#",$m);
$word=$nn[0];
$sql.="("$word",1,$senti_value,2),";//ここで、単語には一重引用符 (ジャックなど) が含まれる可能性があるため、単語を含めるには二重引用符を使用する必要があることに注意してください。 (エスケープに注意)
}
}
$i++;
}
// $i をエコー;
$sql=substr($sql,0,-1);//最後のカンマを削除します
//エコー $sql;
File_put_contents('20000-25000.txt', $sql); //一度に 5000 エントリのデータベースをバッチインポートすると、max_execution_time が足りなくなり失敗します
?>
1. 大量のデータをインポートする場合は、PHP のいくつかの制限に注意する必要があります。一時的に調整しないと、エラーが報告されます。
許可されたメモリ サイズ 33554432 バイトが使い果たされました (16 バイトを割り当てようとしました)
2、PHPはTXTファイルを操作します
file_put_contents()
3. 大量にインポートする場合は、失敗の可能性を減らすためにバッチでインポートすることをお勧めします
4. 一括インポートの前に、スクリプトを複数回テストする必要があります (100 個のデータでテストするなど)。
5. インポート後も、PHP の mem_limit がまだ十分でない場合、プログラムは実行できません
(一時的なステートメントを使用する代わりに、php.ini を変更して mem_limit を増やすことをお勧めします)
http://www.bkjia.com/PHPjc/477529.html
www.bkjia.com