SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.08.2014 15:59:19

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Непечатаемые символы в запросе

Добрый день!Помогите составить запрос!

Есть БД 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)

Неактивен

 

#2 14.08.2014 16:26:23

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Непечатаемые символы в запросе

Думаю, что Вам будет проще заменить эту рожицу каким-нибудь str_replace'ом на адекватный разделитель, который понимает load data local infile - например на точку с запятой.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 18.08.2014 15:05:19

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Re: Непечатаемые символы в запросе

Проблема заключается в том, что если я, к примеру, ставлю в качестве разделителя знак %, если MySQL при импорте находит этот знак в каком-либо поле в тексте, он считает это границей поля, => рубит и остаток текстовых данных оказывается в соседнем поле...где они не должны быть...может все-таки есть вариант как указать chr(1) в качестве разделителя?......fields terminated by и.т.д и.т.п

Отредактированно Тигран (18.08.2014 15:09:07)

Неактивен

 

#4 18.08.2014 21:28:59

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Непечатаемые символы в запросе

Например, можно написать команду LOAD DATA INFILE в отдельном текстовом файле и в нем вставить в запрос этот символ как разделитель. Затем вызывать как
mysql < query.txt

Неактивен

 

#5 19.08.2014 10:36:31

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Re: Непечатаемые символы в запросе

rgbeast написал:

Например, можно написать команду LOAD DATA INFILE в отдельном текстовом файле и в нем вставить в запрос этот символ как разделитель. Затем вызывать как
mysql < query.txt

Подскажите пожалуйста синтаксис запроса.Как указать символ chr(1) в запросе?

Неактивен

 

#6 20.08.2014 02:29:53

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Непечатаемые символы в запросе

LOAD DATA INFILE 'file_name' INTO TABLE tbl_name FIELDS TERMINATED BY 'X';

На месте X должен стоять chr(1). Его можно туда записать в hex-редакторе или в программе.

Неактивен

 

#7 20.08.2014 09:30:18

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Re: Непечатаемые символы в запросе

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-редакторе или в программе. - не совсем понял что вы имеете ввиду.

Неактивен

 

#8 20.08.2014 09:41:25

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Непечатаемые символы в запросе

Запрос должен быть записан в отдельном файле, а не в консоли и не в phpmyadmin. В файле на этом месте должен быть первый символ аски-таблицы. Создать файл - любым удобным способом:
*) в hex-редакторе https://ru.wikipedia.org/wiki/Hex-%D1%8 … 0%BE%D1%80
*) из программы

У Вас уже есть файл с таким символом, значит можете создать другой файл с запросом, содержащим этот символ.

Неактивен

 

#9 20.08.2014 10:43:09

Тигран
Участник
Зарегистрирован: 14.08.2014
Сообщений: 10

Re: Непечатаемые символы в запросе

Ура все получилось, спасибо большое за помощь!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson