Перейти к содержимому

Фото
- - - - -

Проблема импорта баз


  • Вы не можете создать новую тему
  • Please log in to reply
8 ответов в этой теме

#1 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 29 Июль 2007 - 10:49

Привет,
Ну короче такая проблема.
Слова при импорте из Access импортируются в mysql5 нормально, русские буквы и английские (другие символы как ü õ ö ä - заменяются иероглифами).
Пример: www.octanus.com/octstand/fr/portuguese.php
Нужно с импортировать файл - Русско-Английскую базу
www.octanus.com/developer/files/Octanus.xls
Дело в том, что если я добавляю слова через веб форму, то всё работает нормально, все национальные буквы на своих местах.
А если просто импортирую из такой базы, то русские буквы будут на сайте выводится ? знаками вопроса.
Но одновременно в phpmyadmin'е они пишутся правильно.
Весь сайт в кодировке utf-8
и mysql тоже в utf-8_bin.
Мож у кого была такая ситуация подскажите плиз.
Пока.
  • 0

#2 OmIkRoNiXz

OmIkRoNiXz
  • Пользователь
  • 90 сообщений
  • Откуда:Estonia, Tallinn, Võru

Отправлено 29 Июль 2007 - 12:06

Что если первый запрос к базе делать такой вдруг поможет :)?
SET NAMES 'utf8'
  • 0
gamehost.ee

#3 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 30 Июль 2007 - 20:24

Нее к сожалению не работает :(
Пишу такой код
mysql_query("SET NAMES 'utf-8'"); // эту строчку и добавил

$key = "ID";

$q="SELECT * FROM base ORDER BY $key LIMIT $start,$per_page";

Но результат таков, что всеровно будут выводится ? знаки вопроса.

Сообщение изменено: Alex5 (30 Июль 2007 - 20:24 )

  • 0

#4 Fors

Fors
  • Пользователь
  • 328 сообщений

Отправлено 31 Июль 2007 - 07:56

нескромный вопрос, почему база у тебя в утф8_бин?

как ты прописываешь кодировку? на уровне базы попробуй:
CREATE DATABASE ... DEFAULT CHARACTER SET UTF8;

а потом каждую таблицу поправь:
CREATE TABLE ... ( ) DEFAULT CHARACTER SET UTF8;
  • 0

#5 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 31 Июль 2007 - 08:41

вестимо у автора калейшн utf-8_bin
а база (или конкретаная таблица) в utf8

Alex5, читай правильно что тебе советуют:

SET NAMES 'utf8'

а не

SET NAMES 'utf-8'


  • 0

#6 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 31 Июль 2007 - 08:57

Base.sql >>
CREATE TABLE `base` (
`ID` int(11) NOT NULL auto_increment,
`rus` text NOT NULL,
`russian` text NOT NULL,
`italian` text NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=362 ;

--
-- Дамп данных таблицы `base`
--

INSERT INTO `base` VALUES (1, 'russian', 'italian', '');
INSERT INTO `base` VALUES (2, 'a', 'Р° ', 'e, ma, mentre, invece eppure, ma, pero mentre, intanto e, ma eh ah');
INSERT INTO `base` VALUES (3, 'абажур ', 'абажур ', 'paralume');
INSERT INTO `base` VALUES (4, 'аббат ', 'аббревиатура ', 'abbreviazione, sigla');
INSERT INTO `base` VALUES (5, 'абзац ', 'абзац ', 'alinea capoverso paragrafo, capoverso, comma albicocco albicocca');
INSERT INTO `base` VALUES (6, 'абонент ', 'абонент ', 'abbonato, utente');
и т.д ...
Значит на уровне таблицы всё ок.
Вообще-то у меня кодировка не utf-8_bin
а utf-8_unicode_ci - кодировка всей базы
может в этом проблема?
А насчёт CREATE DATABASE - боюсь такое невозможно - хостинг такого не позволяет - он автоматически в cpanel создаёт базу.
  • 0

#7 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 08 Август 2007 - 19:28

Помогли
А теперь ответ на этот вопрос

<?
$hostname = "localhost";
$username = "root";
$password = "пароль";
$database = "база";
/* создать соединение */
$db_link =mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* Таблица MySQL, в которой хранятся данные */
$userstable = "таблица";

mysql_select_db($database) or die(mysql_error());

mysql_query ( "set character_set_client='utf8'", $db_link );
mysql_query ( "set character_set_results='utf8'", $db_link );
mysql_query ( "set collation_connection='utf8_general_ci'", $db_link );

...
?>
Вот и всё.
Удачи

Сообщение изменено: Alex5 (08 Август 2007 - 19:29 )

  • 0

#8 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 10 Август 2007 - 10:06

Alex5, тебе этот ответ дал OmIkRoNiXz во втором посте
Ты придумал кодировку

utf-8

которой в mysql нет. Есть utf8.

А то решение которое ты предлагаешь слишком громоздкое, ибо в мануале сказано:

A SET NAMES 'x' statement is equivalent to these three statements:

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;


а калейшен тоже стандартный и вручную его выставлять не надо:

utf8 | UTF-8 Unicode | utf8_general_ci


  • 0

#9 Alex5

Alex5
  • Пользователь
  • 42 сообщений

Отправлено 10 Август 2007 - 10:22

ОК, просто это решение мне помогло и хорошо.
Вот только 18000 записей в файле с экспортировать не удаётся.
Вчера 3 часа перекачивало из access в mysql и в итоге всего 2400 рядов - т.е 4800 слов.
Что интересно - если экспортировать файл например размером в 3000 рядов то с экспортируется за пол часа и полностью :)
Короче буду искать конверторы.
  • 0