Вставте звичайний текстовий список до таблиці mysql

У мене дуже довгий список у простому тексті, який мені потрібно вставити в таблицю моєї бази даних. Чи потрібно вручну вводити кожен рядок мого звичайного текстового документа, або є спосіб вставити довгі списки в незалежні рядки таблиці, використовуючи запит?

У мене є таблиця з 2 стовпцями, id та club_name, club_name - це список, який є текстом у документі блокнота.

1

7 Відповіді

Ви можете скористатися LOAD DATA , наприклад:

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';

Також можна скористатися багаторядковою вставкою Синтаксис (якщо ви використовуєте таблиці InnoDB), наприклад:

INSERT INTO yourtable VALUES (1,2), (5,5), ...
3
додано
Я повинен був згадати, що це близько 2000 рядків мені потрібно вставити, який метод ви рекомендуєте для цього числа рядків тексту?
додано Автор huddds, джерело
@ huddds для цього низького числа рядків, я дійсно не думаю, що це має значення. Перейдіть з будь-яким методом, який вам найбільше сподобається.
додано Автор Klaus Byskov Pedersen, джерело

Вставте весь вміст блокнота в стовпець типу "текст"

1
додано
    $file = file("content.txt"); //read file line by line
    foreach ($file as $val) {
        if (trim($val) != '') { //ignore empty lines
            mysql_query("INSERT INTO xxx SET club='" . $val . "'");
        }
    }
0
додано

Ви можете завантажити дані в MySQL за допомогою команди LOAD DATA INFILE .

Here is the documentation... http://dev.mysql.com/doc/refman/5.1/en/load-data.html

0
додано

Ви можете завантажити дані в MySQL за допомогою команди LOAD DATA INFILE .

Here is the documentation... http://dev.mysql.com/doc/refman/5.1/en/load-data.html

0
додано

Нижче наведено приклад на основі PDO . : //dev.mysql.com/doc/refman/5.1/en/load-data.html "rel =" nofollow "> команду LOAD DATA INFILE . маніпулювати вихідними даними (обрізати, нормалізувати тощо).

<?php
$conn = new PDO($dsn, $username, $password);
$stmt = $conn->prepare('INSERT INTO table VALUES (NULL, ?)');
foreach(file('list.txt') as $club) {
    $stmt->execute(array($club));
}

Ентоні.

0
додано

Ось як це зробити з PHP, mysqli і текстовим файлом, який має кожну запис в одному рядку:

<?php
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$file = file("list.txt"); //read file line by line
    foreach ($file as $val) {
        if (trim($val) != '') { //ignore empty lines
            $sql = "INSERT INTO `db`.`table` (`column`) VALUES ('$val');";
            if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "
" . $conn->error; } } } ?>

Це базується на відповіді DanFromGermany, але оновлено для використання mysqli.

0
додано
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php