Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Импортировать CSV в базу с column mappings / 20 сообщений из 20, страница 1 из 1
14.07.2017, 18:59
    #39489323
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Здравствуйте!

Имеется проект в c#, файл с данными (CSV) порядка 10 тыс. строк и база MySql. Требуется импортировать данные в базу, при этом импортировать нужно не все колонки, имена полей в базе и файле разные т.е. нужно явно указывать как поля соотносятся (column mappings). Попробовал MySqlDataBulkLoader, но увы. Можно ли решить задачу напрямую в базе? В принципе, что посоветуете? Заранее спасибо.
...
Рейтинг: 0 / 0
14.07.2017, 20:22
    #39489362
Дормедонт Евлампиевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
iMrTidy,

мне кажется, пока ждешь здесь ответа уже несколько раз можно написать парсер, хоть на том же C#, который превратит csv в балк-скрипт для mysql...
...
Рейтинг: 0 / 0
14.07.2017, 20:52
    #39489373
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
iMrTidyчто посоветуете?Импорт во временную таблицу и затем копирование в боевую.
...
Рейтинг: 0 / 0
14.07.2017, 21:10
    #39489382
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
...
Рейтинг: 0 / 0
14.07.2017, 21:24
    #39489385
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Дормедонт ЕвлампиевичiMrTidy,

мне кажется, пока ждешь здесь ответа уже несколько раз можно написать парсер, хоть на том же C#, который превратит csv в балк-скрипт для mysql...

Я почти весь день потратил на это дело, поэтому парсер написан, даже в 2-х вариантах, но ни один не решает "красиво" задачу с column mappings и типом данных. В первом случае, данные сначала импортируются в Dictionary, а потом в базу при помощи Entity Framework, но имена и типы данных приходится задавать вручную. Во втором варианте, импорт идет через DataTable. И здесь можно задать имена полей динамически, пока не понятно как быть с типами данных. Есть идея определять их исходя из содержимого.
...
Рейтинг: 0 / 0
14.07.2017, 21:25
    #39489386
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
AkinaiMrTidyчто посоветуете?Импорт во временную таблицу и затем копирование в боевую.

В DataTable? А как посоветуете быть с column mappings и типами данных?
...
Рейтинг: 0 / 0
14.07.2017, 21:26
    #39489387
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
iMrTidyЯ почти весь день потратил на это делоПосмотреть в справочник команд MySQL вышло бы значительно быстрее.
...
Рейтинг: 0 / 0
14.07.2017, 21:41
    #39489388
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
miksoftiMrTidy,

LOAD DATA INFILE

Возможно я не внимательно читал, но не нашел как можно явно указать какие поля каким должны соответствовать.
...
Рейтинг: 0 / 0
14.07.2017, 21:48
    #39489390
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
iMrTidyВ DataTable?Меня просто изумляет Ваше настойчивое желание сделать через задницу. Задача - передать файл в БД. Действующие лица: файл, СУБД. Какого хрена надо пытаться подсунуть какого-нибудь посредника? Тебе что, этот шарп взятку сунул? Его дело мелкое - передал приказ и свалил в сторону. А весь приказ - два запроса.
...
Рейтинг: 0 / 0
14.07.2017, 22:03
    #39489392
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
AkinaiMrTidyВ DataTable?Меня просто изумляет Ваше настойчивое желание сделать через задницу. Задача - передать файл в БД. Действующие лица: файл, СУБД. Какого хрена надо пытаться подсунуть какого-нибудь посредника? Тебе что, этот шарп взятку сунул? Его дело мелкое - передал приказ и свалил в сторону. А весь приказ - два запроса.

Я Вас не так понял, конечно посмотрю temp tables. Недоделанный код мне достался от предшественника, поэтому я спросил изначально:

iMrTidyМожно ли решить задачу напрямую в базе?
...
Рейтинг: 0 / 0
14.07.2017, 22:13
    #39489395
Дормедонт Евлампиевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Akina,
...
Рейтинг: 0 / 0
14.07.2017, 22:15
    #39489398
Дормедонт Евлампиевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Akina, восхищюсь Вашими ответами..

А что делать в подобном случае, если СУБД на другом узле, и нет возможности использовать утилиты типа mysqlimport ?
...
Рейтинг: 0 / 0
14.07.2017, 23:16
    #39489411
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
iMrTidymiksoftiMrTidy,

LOAD DATA INFILE

Возможно я не внимательно читал, но не нашел как можно явно указать какие поля каким должны соответствовать.
Код: sql
1.
 [SET col_name = expr,...]

Далее по тексту есть примеры.
...
Рейтинг: 0 / 0
14.07.2017, 23:16
    #39489412
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Дормедонт ЕвлампиевичА что делать в подобном случае, если СУБД на другом узле, и нет возможности использовать утилиты типа mysqlimport ?Установить клиент MySQL.
...
Рейтинг: 0 / 0
15.07.2017, 00:20
    #39489432
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
miksoftiMrTidyпропущено...


Возможно я не внимательно читал, но не нашел как можно явно указать какие поля каким должны соответствовать.
Код: sql
1.
 [SET col_name = expr,...]

Далее по тексту есть примеры.

Я посмотрел, все равно получается, что прописывать придется вручную. Есть способ сделать это динамически, например, если есть таблица с соответствиями?
...
Рейтинг: 0 / 0
15.07.2017, 00:31
    #39489433
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Уточню задачу. Файл csv содержит 50 колонок, имена и порядок которых могут меняться время от времени, могут добавляться новые и удаляться старые. Есть таблица в базе, в которой содержится 30 колонок, имена, позиции не соответствуют тем, что есть файле. Есть список, который будет обновляться пользователем, содержащий какая колонка файла соответствует колонке в базе. Колонки в базе имеют разные типы данных.
...
Рейтинг: 0 / 0
15.07.2017, 09:02
    #39489456
Дормедонт Евлампиевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
miksoftДормедонт ЕвлампиевичА что делать в подобном случае, если СУБД на другом узле, и нет возможности использовать утилиты типа mysqlimport ?Установить клиент MySQL.

Правильно понял, что если нет такой возможности, то тут либо такую возможность изыскать, либо никак?
...
Рейтинг: 0 / 0
16.07.2017, 15:37
    #39489725
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
iMrTidyЕсть способ сделать это динамически, например, если есть таблица с соответствиями?Генерировать запрос динамически в клиентской программе.
К сожалению, в MySQL-процедурах не получится.
...
Рейтинг: 0 / 0
16.07.2017, 15:43
    #39489728
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Дормедонт Евлампиевичmiksoftпропущено...
Установить клиент MySQL.

Правильно понял, что если нет такой возможности, то тут либо такую возможность изыскать, либо никак?Либо изыскать, либо эскалировать исключение выше по иерархии - тому, кто поставил такую задачу.
...
Рейтинг: 0 / 0
17.07.2017, 01:25
    #39489903
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Импортировать CSV в базу с column mappings
Всем спасибо за участие!

В итоге сделал парсер/адаптер, который переделывает исходный файл под нужный формат для таблицы в базе, а дальше действует MySqlBulkLoader.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Импортировать CSV в базу с column mappings / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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