Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!Помогите составить запрос!
Есть БД MySQL и таблица в виде двух столбиков 'фамилия' 'имя' и 'Отчество'
есть файлик 1.txt в нем записаны ФИО
Иванов Петр Михайлович
Сидоров Иван Александрович и.т.д. и.т.п
Данные из файла нужно перенести в таблицу.
Проблема заключается в том, что в в качестве разделителя между ФИО используется непечатаемый символ 01(если не ошибаюсь это рожица), конец строки стандартный - Chr(13) + Chr(10)
т.е. получается:
Иванов☺Петр☺Михайлович Chr(13) + Chr(10)
Сидоров☺Иван☺Александрович Chr(13) + Chr(10) и.т.д. и.т.п
Данные пытаюсь перекинуть с помощью LOAD DATA INFILE, но не знаю, как указать, что непечатаемый символ является разделителем полей, помогите пожалуйста!
Отредактированно Тигран (14.08.2014 16:21:03)
Неактивен
Думаю, что Вам будет проще заменить эту рожицу каким-нибудь str_replace'ом на адекватный разделитель, который понимает load data local infile - например на точку с запятой.
Неактивен
Проблема заключается в том, что если я, к примеру, ставлю в качестве разделителя знак %, если MySQL при импорте находит этот знак в каком-либо поле в тексте, он считает это границей поля, => рубит и остаток текстовых данных оказывается в соседнем поле...где они не должны быть...может все-таки есть вариант как указать chr(1) в качестве разделителя?......fields terminated by и.т.д и.т.п
Отредактированно Тигран (18.08.2014 15:09:07)
Неактивен
Например, можно написать команду LOAD DATA INFILE в отдельном текстовом файле и в нем вставить в запрос этот символ как разделитель. Затем вызывать как
mysql < query.txt
Неактивен
rgbeast написал:
Например, можно написать команду LOAD DATA INFILE в отдельном текстовом файле и в нем вставить в запрос этот символ как разделитель. Затем вызывать как
mysql < query.txt
Подскажите пожалуйста синтаксис запроса.Как указать символ chr(1) в запросе?
Неактивен
Неактивен
rgbeast написал:
LOAD DATA INFILE 'file_name' INTO TABLE tbl_name FIELDS TERMINATED BY 'X';
На месте X должен стоять chr(1). Его можно туда записать в hex-редакторе или в программе.
в том то и дело, что я не знаю как записать его туда...
пишу
LOAD DATA INFILE 'C:\TEST.TXT' INTO TABLE TEST FIELDS TERMINATED BY 'chr(1)' LINES TERMINATED BY '\R\N' - выдает ошибку
"Data too long for column 'НомДок' at row 1"
P.S.
На месте X должен стоять chr(1). Его можно туда записать в hex-редакторе или в программе. - не совсем понял что вы имеете ввиду.
Неактивен
Запрос должен быть записан в отдельном файле, а не в консоли и не в phpmyadmin. В файле на этом месте должен быть первый символ аски-таблицы. Создать файл - любым удобным способом:
*) в hex-редакторе https://ru.wikipedia.org/wiki/Hex-%D1%8 … 0%BE%D1%80
*) из программы
У Вас уже есть файл с таким символом, значит можете создать другой файл с запросом, содержащим этот символ.
Неактивен
Ура все получилось, спасибо большое за помощь!
Неактивен