1

.txt ファイルからデータベースへのデータ転送に関して問題があります。10 個の .txt ファイルがあり、そのすべてのデータをデータベースに転送したいと考えています。以下のコードは、これまでに .txt ファイルを 1 つだけ試していたものです。その与えるエラー。人がアップロードをクリックすると、zipファイルをサーバーのアップロードフォルダーにアップロードします。これを行うコードは次のとおりです。

if(isset($_FILES['zip'])){
    $errors = array();

    $zip = new ZipArchive();

    if(strtolower(end(explode('.', $_FILES['zip']['name'])))!=='zip'){
        $errors[] = 'That does not look like a .zip file.';
    }

    if($_FILES['zip']['size']>104857600){
        $errors[] = 'There is a size limit of 100MB';
    }

    if($zip->open($_FILES['zip']['tmp_name'])==false){
        $errors[]='Failed to open zip file.';
    }

    if(empty($errors)){
        $extracted_files = array();

        for($i=0;$i<$zip->numFiles;$i++){
            $entry_info = $zip->statIndex($i);

            $extracted_files[] = $entry_info['name'];
        }

        print_r($extracted_files);

        $zip->extractTo('./uploads');
        $zip->close();
    }
}

これにより、zip ファイルがアップロードされ、解凍されます。ここで、.txt ファイルからデータを読み取り、データベースにデータを入力したいと考えています。以下のコードは私が持っているものですが、特にファイルがあるパスについてエラーが発生します。誰かが私が以下に持っているコードを手伝ってくれるなら、ファイルパスを手伝ってくれるか、ファイルを別の場所に置くことを提案してください。コードは次のとおりです。

$string = file_get_contents("set_1.txt","r");
$myFile = "/Applications/MAMP/bin/mamp/uploads";
$fh = fOpen($myFile,'w') or die("could not open: " . mysql_error());
fwrite($fh, $string);
fclose($fh);

$sql = mysql_connect("localhost", "root","root");
if(!$sql){
    die("could not connect: " . mysql_error());
}

mysql_select_db("Tweet_Corpora");
$result = mysql_query("LOAD DATA INFILE '$myfile'" . " INTO TABLE Display FIELDS TERMINATED BY '/\s+/'");

if(!$result){
    die("could not load. " . mysql_error());
}

私のテーブルは次のようになります。

|id |tweet_id |raw_tweet |normalized_tweet|

tweet_id 列と raw_tweet 列に入力するだけです。

私のデータは、各ファイルで次のようになります。

57587072533413889   @NAYDIVAA1 thought I saw u today u know
57743998223265792   The art of sleeping in the early morning and waking up at tea time.
57817604059959296   RT @dilleeeey: I'm very very very hungry. But I'm lazy to eat$

助けてください。本当に感謝します。

4

1 に答える 1

0
$string = file_get_contents("set_1.txt","r");
$myFile = "/Applications/MAMP/bin/mamp/uploads";
$fh = fOpen($myFile,'w') or die("could not open: " . mysql_error());
fwrite($fh, $string);
fclose($fh);

この部分では、パスを定義していないため、おそらくルート パスにあるファイルのファイル コンテンツを読み取ります。

次に、ディレクトリに対して fopen を実行し、何かを書き込みます。それはそれがどのように機能するかではありません。ファイルに何かを書きたい場合は、ファイルを開く必要があります。コンテンツを含むファイルを既に取得しているのに、なぜファイルに書き込もうとしているのかさえわかりません。さらに奇妙なことに、ファイルのオープンに失敗した瞬間に mysql_error() を表示します。その2人は互いに何の関係もありません。データベースにも接続していません。

私は LOAD DATA INFILE に慣れていませんが、おそらく最初の部分は次のようにする必要があります。

$string = file_get_contents("/path/to/file/set_1.txt","r");

$sql = mysql_connect("localhost", "root","root");
if(!$sql){
    die("could not connect: " . mysql_error());
}

mysql_select_db("Tweet_Corpora");
$result = mysql_query("LOAD DATA INFILE '$myfile'" . " INTO TABLE Display FIELDS TERMINATED BY '/\s+/'");

if(!$result){
    die("could not load. " . mysql_error());
}

大きなファイルがある場合は、fopen を使用して、ファイルの一部のみを読み取ることをお勧めします。たぶん、この質問もあなたを助けることができます: テキストファイルを読み、コンテンツをmysqlデータベースに転送します

于 2013-08-04T15:48:05.813 に答える