0

txt ファイル内に製品名のリストがあります。ただし、ファイルは巨大 (4,8GB++) であるため、文字数が多くなります。製品名に加えて、md5 ハッシュ、時間、ランダム ID などの追加情報を追加したいと思います。

これを行うための最良の解決策は何ですか?行ごとに読み取る PHP スクリプトを作成するには、永遠に時間がかかるようです。

良い提案はありますか?

4

3 に答える 3

0

はい、php を使用してテキスト ファイルを読み取り、それをデータベースに渡すことができます

$string = file_get_contents("YOURTEXTFILE", "r");
$myFile = "PATH/TO/YOUR/TEXTFILE";
$fh = fopen($myFile, 'w') or die("Could not open: " . mysql_error());
fwrite($fh, $string);
fclose($fh);

$sql = mysql_connect("localhost", "root", "password");
if (!$sql) {
    die("Could not connect: " . mysql_error());
}
mysql_select_db("YOURDB");
$result = mysql_query("LOAD DATA INFILE '$myFile'" .
                      " INTO TABLE test FIELDS TERMINATED BY '|'");
if (!$result) {
    die("Could not load. " . mysql_error());

}

そして結果はこのようになります

+--------+-------------+------------+
|     ID | Name        | time       |
+--------+-------------+------------+
|    145 | line1       | 23:59      |
|    234 | line2       | 00:00      |
+--------+-------------+------------+
于 2013-03-16T21:24:18.510 に答える
0

以前にこのソリューションを使用したことがありますが、ファイルのサイズが原因でうまくいくかどうかはわかりません。他の誰かに役立つ場合に備えて、ここに残しておきます。

product.txt ファイルには productID のみがあり、他に何もないと仮定します。

  1. 各行を括弧で囲むように変更します (これは、 )、\n(の NEWLINE (通常は\n )の検索/置換を実行することで実現できます)
  2. 次に、上部にクエリを配置します。ファイルの最後が有効なクエリを閉じていることを確認してください
  3. mysqldump のように mysql でインポートする

基本的に変更

PID1
PID2

(PID1),
(PID2),

次に、簡単な編集でファイルを読み取らせます

INSERT INTO dTable(ColName) VALUES
(PID1),
(PID2);

そして最後にインポート

mysql -uUser -p DATABASE < filename.sql

これは初歩的な方法ですが、それほど手間をかけずに機能するはずです。必要な残りのデータを追加すると、後で SQL で簡単に実行できます。

于 2013-03-16T21:28:00.453 に答える
0

mysql を使用していて、ファイルが CSV タイプの場合は、LOAD DATA INFILE.

整形式の CSV があれば、PHP はまったく必要ありません。

その場合はお知らせください。詳細を追加できます。

于 2013-03-16T21:50:02.750 に答える