Командная строка MYSQL ВЫБРАТЬ В OUTFILE, ЗАГРУЗИТЬ ИНФИЛЬ ДАННЫХ ... В ТАБЛИЦУ в CSV с HTML-данными в столбце - PullRequest
0 голосов
/ 21 октября 2019

У меня есть столбцы, которые WYSIWYG, когда я использую команду SELECT INTO FILE для CSV, когда я открываю данные с помощью Excel, данные перепутаны в столбце b Данные в столбце c и т. Д. и я не могу использовать команду LOAD DATA INFILE.

Если я удаляю все html, это работает, но мне нужен HTML!

Кто-нибудь делал это раньше, и как я могу этого добиться?

По примеру, найденному здесь: https://dev.mysql.com/doc/refman/8.0/en/select-into.html

SELECT  'id', 'title', 'driving', 'transit', 'parking', 'summary', 
'description', 'is_active' UNION ALL SELECT title, driving, transit, 
parking, summary, description, status FROM MY_TABLE INTO OUTFILE 
'/var/lib/mysql-files/my_table.csv' FIELDS TERMINATED BY ',' OPTIONALLY 
ENCLOSED BY '"' LINES TERMINATED BY '\n';

Данные снимка экрана от my_table.csv enter image description here

Вы можете увидеть idcolumn 1, а затем ниже данные, относящиеся к одному из вождения, транзита, парковки или резюме. затем id 2 сразу после того, как я думаю, что проблема с новыми строками в столбцах WYSWYG. Мне нужно сохранить их в правом столбце при экспорте в CSV.

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Проблема, с которой я столкнулся, состоит в том, что данные WYSWYG имеют html-контент, например: class="class", и теги привязки, например, так: <a href="anchor-link">anchor text</a> Вот мой вариант решения проблемы. он включает в себя заголовки:

 SELECT  'id', 'title', 'driving', 'transit', 'parking', 'summary','description','is_active'
 UNION ALL SELECT id, title, driving, transit, parking, summary, description, status 
 FROM my_table INTO OUTFILE '/var/lib/mysql-files/data.csv' 
 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';

С помощью приведенного выше запроса он добавит \ перед " в HTML-классе и <a> теги.

Откройте файл в редакторе вашеговыбор и строку заменить \" на ""

И все встает на свои места!

0 голосов
/ 22 октября 2019

CSV вообще не подходит для экспорта HTML. Ваши текстовые поля, вероятно, содержат запятую или двойные кавычки, которые сдвигают все данные, прочитанные после него. Это не просто проблема с отображением.

Вы можете попытаться заменить знак запятой на htmlentitie, чтобы избежать разрыва формата CSV.

при условии, что заголовок и описание являются HTML ...

SELECT id,
       replace (title,       ','  , '&comma;' ) as title, 
       replace (description, ','  , '&comma;' ) as description 
FROM your_table

но без реальных данных трудно найти решение вашей проблемы.

...