Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / При импорте CSV в table1 создается другая таблица и возникает ошибка / 2 сообщений из 2, страница 1 из 1
17.08.2013, 09:20:20
    #38369642
teleport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При импорте CSV в table1 создается другая таблица и возникает ошибка
День добрый!

Недавно начал изучать PHP, столкнулся некоторыми траблами. Сначала немного о том, что установлено: на машине под WinXP установлены Apache/2.4.3 (Win32) PHP/5.4.11 , phpMyAdmin 4.0.0. Максимальные размеры импортируемых в SQL файлов увеличил в настройках до 300 мб.

При импорте CSV базы 70 мб (100 тыс.строк, 8 столбцов) возникает ошибка. Проблема в том, что в строчке № ~90000 длина текстовой переменной столбца №5 больше, чем максимально возможный размер массива CHAR (видимо, mySQL по умолчанию создает для строковых переменных массив из CHAR, а не TEXT).

Может кто знает, как в заголовке CSV файла прописать конкретные типы переменных?
Если эту проблему решить - уверен, всё нижеописанное решится само собой.


В общем, что сейчас имею: при разбитии файла CSV на 10000 записей - файл CSV нормально загружается.

Когда все 100 тыс.строк гружу - доходя до записи с большой длиной текстовой переменной - вылетает.

Первое что напрашивается - обхитрить mySQL и загрузить в существующую таблицу с прописанными переменными. Сделал следующее:
1. Загрузил CSV файл с количеством 1000 строк (создалась таблица table1).
2. Затем стёр содержимое уже всех загруженных строк в таблице table1.
3. В table1 изменил тип переменной столбца №5 с массива varchar на tinytext.
4. Стёр из CSV файла заголовок с наименованием полей.
5. Выбрал table 1 и попытался загрузить (импортировать) в table1 данные из CSV файла (без первой строчки с наименованиями заголовков столбцов).

База начала шустро импортироваться, и в очередной раз зависла на 81% (см.картинку).
[img] http://s4.uploads.ru/Jl5nW.png [/img]

Попытался ещё раз всё тоже самое - загрузилась до 96% и снова зависла.
[img] http://s5.uploads.ru/ZCx3a.png [/img]

А затем выскакивает одна и та же ошибка, на красном фоне со следующим содержимым:
Ошибка
SQL-запрос:

CREATE TABLE IF NOT EXISTS `test`.`TABLE 2` (

`COL 1` INT( 6 ) ,
`COL 2` VARCHAR( 56 ) ,
`COL 3` INT( 10 ) ,
`COL 4` VARCHAR( 19 ) ,
`COL 5` VARCHAR( 53667 ) ,
`COL 6` INT( 5 ) ,
`COL 7` VARCHAR( 10 ) ,
`COL 8` VARCHAR( 10 ) ,
`COL 9` VARCHAR( 10 )
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Ответ MySQL: Документация

#1074 - Column length too big for column 'COL 5' (max = 21845); use BLOB or TEXT instead

Судя по тексту - MySQL почему создаёт новую таблицу table2 и пытается импортировать данные в неё.
При этом, уже ни одна запись не загружается ни в table1 , ни в table2

PS: вот, сижу, чешу затылок... думаю что не так... у кого какие будут соображения? плиз озвучьте срочно.
...
Рейтинг: 0 / 0
17.08.2013, 11:38:32
    #38369656
Stupid_BOT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При импорте CSV в table1 создается другая таблица и возникает ошибка
teleport,
соображение первое: почитать документацию .
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / При импорте CSV в table1 создается другая таблица и возникает ошибка / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]