Задать вопрос

Как добавить в БД большой объем текста?

Всем доброго дня!)

Нужно добавить в БД за раз 300 строк текста, при этом каждая строка должна быть в разной ячейке.
Например:
1. Привет
2. Пока

Эти слова должны быть в разных ячейках "content" со своим id.
  • Вопрос задан
  • 507 просмотров
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 3
@bIbI4k0
Питоню
insert into table1 (id, content) values (1, 'привет'), (2, 'пока'), (3, 'мир'), ...;
Ответ написан
@AVKor
$ cat in.txt 
1. Привет
2. Пока

$ sed -n 's/ //gp' in.txt > out.csv

$ cat out.csv 
1.Привет
2.Пока

mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.01 sec)

mysql> \u test
Database changed
mysql> CREATE TABLE t
    -> (
    -> id INT UNSIGNED,
    -> c VARCHAR(30)
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> LOAD DATA LOCAL INFILE 'out.csv'
    -> INTO TABLE t
    -> FIELDS TERMINATED BY '.';
Query OK, 2 rows affected (0.00 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

mysql> SELECT * FROM t;
+------+--------------+
| id   | c            |
+------+--------------+
|    1 | Привет       |
|    2 | Пока         |
+------+--------------+
2 rows in set (0.00 sec)

Можно обойтись и без sed, но это в том случае, если число пробелов после точки в исходном файле везде равно одному - в этом случае sed'ом не обрабатывать, а FIELDS TERMINATED BY '.' заменить на FIELDS TERMINATED BY '. '.
Ответ написан
Комментировать
Pjeroo
@Pjeroo
Веб-разработчик
$str = "9mm
AG Drive
AirDisk Pro - Wireless Flash Drive
Back to Bed
Bioshock
Five Nights at Freddy's
Five Nights at Freddy's 2
Five Nights at Freddy's 3 ";

$exploded = explode("\n", $str);
$insert = 'insert into table1 (content) ';
foreach ($exploded as $item) 
$insert .= '(\'' . str_replace("'", '`', $item) . '\'),';
$insert = substr($insert, 0, strlen($insert) - 1) . ';';

echo $insert;


Не очень красиво, но работает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы