sql >> データベース >  >> RDS >> Mysql

テキストファイルを読み取り、内容をmysqlデータベースに転送します

    あなたが探しているのは、MySQLの組み込み関数 LOAD DATA INFILE データベースの値を含むテキストファイルをデータベースにロードします。

    例:

    LOAD DATA INFILE 'data.txt' INTO TABLE my_table;
    

    次のように、テキストファイル内で区切り文字を指定することもできます。

    LOAD DATA INFILE 'data.txt' INTO TABLE my_table FIELDS TERMINATED BY '|';
    

    更新:

    これが完全に機能する例です。テストデータファイルここ をアップロードしました。 これが私のPHPコードです。

    $string = file_get_contents("http://www.angelfire.com/ri2/DMX/data.txt", "r");
    $myFile = "C:/path/to/myFile.txt";
    $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("my_database");
    $result = mysql_query("LOAD DATA INFILE '$myFile'" .
                          " INTO TABLE test FIELDS TERMINATED BY '|'");
    if (!$result) {
        die("Could not load. " . mysql_error());
    }
    

    PHPコードを実行する前のテーブルの外観は次のとおりです。

    mysql> select * from test;
    +--------+-----------+------------+
    | DataID | Name      | DOB        |
    +--------+-----------+------------+
    |    145 | Joe Blogs | 17/03/1954 |
    +--------+-----------+------------+
    1 row in set (0.00 sec)
    

    そして、これが後の結果です:

    mysql> select * from test;
    +--------+-------------+------------+
    | DataID | Name        | DOB        |
    +--------+-------------+------------+
    |    145 | Joe Blogs   | 17/03/1954 |
    |    234 | Carl Jones  | 01/01/1925 |
    |     98 | James Smith | 12/09/1998 |
    |    234 | Paul Jones  | 19/07/1923 |
    |    986 | Jim Smith   | 12/01/1976 |
    +--------+-------------+------------+
    5 rows in set (0.00 sec)
    


    1. MySQL-隣接リストモデル-深さを取得

    2. mysqli ::mysqli():(HY000 / 2002):ソケット「MySQL」を介してローカルMySQLサーバーに接続できません(2)

    3. 結果テーブルでリーダーと前の違いを見つける

    4. PostgreSQLのクラウドデータベースオプションの比較