|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Доброго времени суток. С MSSQL имею опыт общения давно, а вот буквально недавно заставили заниматься MySQL, и тут я полный нуб. Возникла необходимость массового импорта кучи файлов (тысячи) в БД. Когда делаю так, все работает: Код: sql 1. 2. 3. 4. 5. 6.
У меня есть список имен файлов, и когда я пытаюсь передать в качестве переменной "путь/имя файла с пробелами.csv" получаю ошибку синтаксиса. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
авторОтвет MySQL: Документация #1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около '@b INTO TABLE `таблица` character set CP1251 FIELDS TERMINATED BY ';' ENCL' на строке 5 Как в эту конструкцию правильно передать путь и имя файла переменной. Спасибо! З.Ы. c Declare и курсором еще разбираюсь... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 11:43 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Имя файла - литерал, и подставляться не будет. Используйте PREPARE statement. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 11:46 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000 кучи файлов Можно там же и нагенерить кучу команд LOAD DATA INFILE. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 12:06 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000, Лучше бы сконвертировал csv в sql инструкции и загнал так, кмк. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 12:26 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
crutchmaster f000, Лучше бы сконвертировал csv в sql инструкции и загнал так, кмк. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 13:55 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
crutchmaster Лучше бы сконвертировал csv в sql инструкции и загнал так, кмк Угу. Только не сами CSV в SQL, а их список - в набор SQL с инструкциями LOAD ... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 14:23 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
А ещё лучше - дополнительно все CSV, заливаемые в одну таблицу, слить в один большой CSV. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 14:24 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Akina А ещё лучше - дополнительно все CSV, заливаемые в одну таблицу, слить в один большой CSV. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 14:44 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
miksoft Akina А ещё лучше - дополнительно все CSV, заливаемые в одну таблицу, слить в один большой CSV. да, формат одинаковый, таблица одна, но это первичный импорт, сейчас общий объем файлов около 1Гб и растет, после первичного наполнения планирую раз в неделю грузить, но там объемы будут гораздо меньше (10-20 Мб). но я пока затупляю с курсором и PREPARE ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 15:30 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000 с курсором и PREPARE ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 16:22 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Akina f000 с курсором и PREPARE из list.txt я уже загнал в табличку list_f) пока нарисовал такую процедуру, прям выдерал куски кода из манов: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Но при выполнении получаю ошибку: автор1295 ER_UNSUPPORTED_PS This command is not supported in the prepared statement protocol yet Данная команда еще не поддерживается в протоколе подготовленных операторов Помогите допилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 16:52 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000, LOAD DATA INFILE кажись не поддерживается в PREPARE https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 17:08 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000 из list.txt я уже загнал в табличку list_f) Либо запустить утилиту mysqlimport с каждым файлом, либо запустить один раз, но скормить ей список файлов. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 17:10 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Alex_Ustinov f000, LOAD DATA INFILE кажись не поддерживается в PREPARE https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html приплыли... и что делать? З.Ы. PHP я еще хуже знаю ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 17:13 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
miksoft f000 из list.txt я уже загнал в табличку list_f) Либо запустить утилиту mysqlimport с каждым файлом, либо запустить один раз, но скормить ей список файлов. пасиба, почитаю ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 17:14 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000, авторЗ.Ы. PHP я еще хуже знаю если тащите из PHP, то там и готовьте запрос, зачем хранимка ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 17:22 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000 пасиба, почитаю ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 18:47 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
f000 из list.txt я уже загнал в табличку list_f ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 20:58 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
miksoft тратить время на конвертацию Ты так и так делаешь конвертацию, просто в твоём случае она идёт через вложенку на mysql, которая не удобная, косая и работает хер пойми как. А написать ты можешь что хочешь и как хочешь. а потом еще и загрузка будет медленнее идти. Да не, загрузка шустро всегда шла, никаких проблем с этим не было. Конвертировал в sql инструкции, а потом потоком заливал в базу как-то так: Код: sql 1.
Идеальный вариант, т.к. заливаются любые объёмы и с данными можно проводить любые манипуляции еще на этапе подготовки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 04:18 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
crutchmaster Идеальный вариант crutchmaster заливаются любые объёмы crutchmaster с данными можно проводить любые манипуляции еще на этапе подготовки У LOAD DATA есть только один минус. Если в процессе импорта произойдёт какая ошибка (скажем, кривые данные, а обработка именно такого не предусмотрела, и в поле пихается в принципе несовместимое значение), то те данные, которые уже были загружены, останутся в таблице, тогда как при загрузке дампа всё (или вызвавший ошибку запрос, если не объявлена транзакция) откатится (между прочим, ахнув на это времени больше, чем потрачено на загрузку проблемным запросом или транзакцией до обнаружения ошибки). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 07:38 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Akina Вообще-то нет. Там есть лимит на размер csv? А csv обязательно надо тащить на сервак? А если он большой? А если много мелких? Akina А время заливки? LOAD DATA по скорости выигрывает, причём порой - аж в разы. Ну, может и выиграет, если всё идеально с первого раза один csv метров на 100 и его не надо никуда тащить. Как видишь у тс'а возникла проблема, потому что файлов много и он не может нормально подставить имя. Если бы он слил всё в один дамп, то вообще бы не парился, всё бы уже сделал и пошел пить чай. Вот и считай, что выгодно по времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 08:19 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
crutchmaster Если бы он слил всё в один дамп, то вообще бы не парился, всё бы уже сделал и пошел пить чай. crutchmaster А csv обязательно надо тащить на сервак? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 09:39 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Akina Ну почему? есть и LOAD LOCAL INFILE. Лишь бы файл доступен был с сервера. Ну так его тащить тогда придётся на сервак в любом случае. Когда надо один раз руками - ну да, на постоянству какими-то скриптами - хз. Хотя, нагенерить чем-нибудь sql, а потом скормить это всё серваку, для ТСа был бы вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 09:54 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
crutchmaster Ну так его тащить тогда придётся на сервак в любом случае. crutchmaster нагенерить чем-нибудь sql ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 10:38 |
|
Массовый импорт CSV
|
|||
---|---|---|---|
#18+
Спасибо всем за быстрый отклик и дельные советы. Запилил процедурку, может через одно место, но это работает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
Формирует текстовый файл с запросами по каждому файлу из списка. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 10:53 |
|
|
start [/forum/topic.php?fid=47&fpage=21&tid=1828562]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 405ms |
0 / 0 |