Что нового

Импорт базы данных MySQL с FTP на сервер

Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
XpycT [?]
`field1`, `field2`, `field3` перечисление полей (колонок) которые буду импортированы в таблицу, они в файле (DataBase.csv) указанны в первой строке
А как импортировать все колонки, не указывая их названия?
Я так понял импортирование предполагает добавление строк, т.е перезаписи случайно не будет?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
XpycT [?]
можно попробовать убрать (`field1`, `field2`, `field3`) из запроса
Колонки импортируются подряд, т.ч придётся как то генерировать строку колонок из файла :(.

Да, не перезаписывает.

В общем всем спасибо за участие, особенно XpycT :smile:, вроде разобрался с темой.
 

XpycT

Скриптер
Сообщения
380
Репутация
133
CreatoR [?]
Колонки импортируются подряд, т.ч придётся как то генерировать строку колонок из файла
Можно перед выполнением запроса импорта, прочитать 1ую строку из файла и привести ее в соответствующий вид для запроса.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
XpycT [?]
Можно перед выполнением запроса импорта, прочитать 1ую строку из файла и привести ее в соответствующий вид для запроса.
Да да, я это и имел в виду. Просто хотелось обойтись без этого, лишнего телодвижения.
 

XpycT

Скриптер
Сообщения
380
Репутация
133
CreatoR
А можно увидеть файл DataBase.csv, хотя бы несколько первых строк?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
XpycT [?]
можно увидеть файл DataBase.csv, хотя бы несколько первых строк?
SQL:
autor;date;short_story;full_story;title;category;alt_name;approve;tags
admin;2012-11-23 02:29:12;"Короткая новость";"Полная новость";"Имя новости";1;Imya-novosti;1;"теги"
admin;2012-11-23 03:16:22;"Короткая новость";"Полная новость";"Имя новости";4;Imya-novosti;1;"теги"
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
XpycT
Есть пару проблем с импортированием...

У меня в некоторых ячейках таблицы есть кавычки, они "отменяются" через слеш, вот так:
SQL:
admin;2012-11-23 02:29:12;"Моя \""короткая\"" новость";"Полная новость";"Имя новости";1;Imya-novosti;1;"теги"
Импорт проходит без проблем, но значения становятся неверными, т.е вместо \" в базе оно отображается как "", и соответственно это нарушает контент.
Adminer умеет импортировать подобные данные, собственно он сам же их так и экспортирует.
Можно ли как то изменить запрос (или ещё что), чтобы эти кавычки добавлялись также как и у Adminer'а?

И ещё, как можно проследить процесс импортирования, т.е импортировать в фоне и получать статус процесса?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
С отменой кавычек разобрался, нужно добавить в запрос ещё и ESCAPED BY '""'.

Остался вопрос с фоновым выполнением запроса. Эта проблема очень актуальна, т.к при длительных запросах GUI зависает.
 

XpycT

Скриптер
Сообщения
380
Репутация
133
CreatoR [?]
Остался вопрос с фоновым выполнением запроса. Эта проблема очень актуальна, т.к при длительных запросах GUI зависает.
По моему это отследить нельзя.

Как вариант (не самый лучший) можно каждую строчку из файла сделать как отдельный запрос и занести в массив, а потом в цикле выполнять запросы и уже отслеживать. Только перед циклом нужно поставить BeginTrans, а после CommitTrans

Код:
$oDBConn.BeginTrans
...
; тут цилк запросов
...
$oDBConn.CommiTrans
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
XpycT [?]
По моему это отследить нельзя
Я немного почитал про это на w3schools.com, там вроде есть параметр adAsyncFetchNonBlocking, но как его использовать я так и не понял :scratch:.

Как вариант (не самый лучший) можно каждую строчку из файла сделать как отдельный запрос и занести в массив, а потом в цикле выполнять запросы и уже отслеживать
Совсем не вариант :smile:.
Файл базы может доходить до ~90 mb :laugh:.
 

XpycT

Скриптер
Сообщения
380
Репутация
133
CreatoR [?]
Совсем не вариант
Ну я же и уточнил что не самый лучший (в 2 ночи ничего более толкового не пришло в голову)

там вроде есть параметр adAsyncFetchNonBlocking
Нашел пример использования adAsyncFetchNonBlocking но только для MSSQL, думаю не составит труда переделать под MySQL. Сейчас проверить этот пример не могу, буду дома пороверю.
 
Верх