|
|
|
При импорте CSV в table1 создается другая таблица и возникает ошибка
|
|||
|---|---|---|---|
|
#18+
День добрый! Недавно начал изучать 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: вот, сижу, чешу затылок... думаю что не так... у кого какие будут соображения? плиз озвучьте срочно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2013, 09:20:20 |
|
||
|
При импорте CSV в table1 создается другая таблица и возникает ошибка
|
|||
|---|---|---|---|
|
#18+
teleport, соображение первое: почитать документацию . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2013, 11:38:32 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1836228]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 331ms |

| 0 / 0 |
