Gaaarfild

Рейтинг
51
Регистрация
24.10.2009
Интересы
5bc341

Оно и так у меня SET NAMES cp1251

Проблема по сути в чем. Я загружаю CSV файл. А потом с помощью SQL загоняю его в БД.

Но файлы PHP в кодировке UTF-8.

CSV тоже должен быть в UTF-8. Но пользователи порой путают кодировку, когда создают CSV и делают в CP1251.

Вот хотел бы обезопасится.

А, так как я файлы не считываю с помощью PHP, iconv не получится для String применить. Надо сначала изменить кодировку закачанного файла, а потом обрабатывать его с помощью MySQL.

Нет. шелл к сожалению, недоступен.

iconv() - Convert string to requested character encoding

А мне бы желательно файл. только не считывая его. Так что всякие file_get_contents() не подойдут. Нельзя, чтобы использовалось много памяти, так как файлы достаточно большие. 2-3 мб

Спасибо большое. =)

Stek:
У MySQL на этот счет есть свои средства:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS [TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES [STARTING BY '']
[TERMINATED BY '\n']
]
[IGNORE number LINES]
[(col_name,...)]

Отличная команда. Спасибо. Тогда еще один вопрос. Как вы видите из кода, он обычную дату превращает в unix timestamp, И часть полей он дублирует в другие таблицы с указанием внешнего ключа. Так же, часть данных преобразовывает на основании других таблиц.

Как решить этот вопрос?

Просто Replace будет ли работать?

Не меняются только номера машин VIN. А вот некоторые остальные данные в линии меняться могут.

А что именно исправить? В БД? Ее изменять нельзя, во первых, во вторых, там более 100 тысяч записей. Сложновато.

А он такой и есть. Я даже упомянул это в топике.

Неа. Не работает почему-то? Или у вас получилось? проверьте сами?

Всего: 61