MySQL: добавить список сразу

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Подскажите запрос или варианты запросов для добавления списка строк (~2-3к) в таблицу (ячейку) сразу с проверкой на уникальность. Ячейка, куда добавить данные надо имеет индекс уникальности. По одной строчке довольно долго процесс проходит. Хочется найти более быстрый вариант добавления данных.
 
Последнее редактирование:

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
47
Баллы
18
Например так

Код:
INSERT INTO `game` (`sport`, `name`, `link`, `changename`, `bookmaker`, `live`, `work`, `name1`, `name2`, `name1change`, `name2change`) VALUES
('Баскетбол', 'Абехас де Гуанахуато — Фуэрца Региа с ОТ ', 'live/Basketball/26567-Mexico-LNBP/148340053-Abejas-de-Guanajuato-Fuerza-Regia', 'Абехас де Гуанахуато+Фуэрца Региа', '1xbet', 1513543683, NULL, 'Абехас де Гуанахуато', ' Фуэрца Региа', 'Абехас де Гуанахуато', 'Фуэрца Региа'),
('Баскетбол', 'Арми — Эйр Форс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148337560-Army-Air-Force-Falcon', 'Арми+Эйр Форс', '1xbet', 1513543626, NULL, 'Арми', ' Эйр Форс', 'Арми', 'Эйр Форс'),
('Баскетбол', 'БКМУ — Орадя с ОТ ', 'live/Basketball/24853-Romania-Liga-Nationala/148335824-BCMU-Pitesti-CSM-Oradea', 'БКМУ+Орадя', '1xbet', 1513543683, NULL, 'БКМУ', ' Орадя', 'БКМУ', 'Орадя'),
('Баскетбол', 'Бостон Колледж — Сентрал Коннектикут Стэйт Блю Девилз с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148335876-Boston-College-Eagles', 'Бостон Колледж+Сентрал Коннектикут Стэйт Блю Девилз', '1xbet', 1513543626, NULL, 'Бостон Колледж', ' Сентрал Коннектикут Стэйт Блю Девилз', 'Бостон Колледж', 'Сентрал Коннектикут Стэйт Блю Девилз'),
('Баскетбол', 'Брайант Юниверсити — Сиена с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148335850-Bryant-Bulldogs-Siena', 'Брайант Юниверсити+Сиена', '1xbet', 1513543683, NULL, 'Брайант Юниверсити', ' Сиена', 'Брайант Юниверсити', 'Сиена'),
('Баскетбол', 'Вандербилт Коммодорз — Аризона Стейт Сан Девилс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148340906-Vanderbilt-Commodores', 'Вандербилт Коммодорз+Аризона Стейт Сан Девилс', '1xbet', 1513543626, NULL, 'Вандербилт Коммодорз', ' Аризона Стейт Сан Девилс', 'Вандербилт Коммодорз', 'Аризона Стейт Сан Девилс'),
('Баскетбол', 'Гарднер-Уэбб Раннин Буллдогз — Хэмптон Пайрэтс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148339668-GardnerWebb-Runnin-Bu', 'Гарднер-Уэбб Раннин Буллдогз+Хэмптон Пайрэтс', '1xbet', 1513543626, NULL, 'Гарднер-Уэбб Раннин Буллдогз', ' Хэмптон Пайрэтс', 'Гарднер-Уэбб Раннин Буллдогз', 'Хэмптон Пайрэтс'),
('Баскетбол', 'Гифойнш — Сангалхос с ОТ ', 'live/Basketball/1122939-Portugal-Division-1/148337478-Guifoes-SC-Alianca-Sangalhos', 'Гифойнш+Сангалхос', '1xbet', 1513543683, NULL, 'Гифойнш', ' Сангалхос', 'Гифойнш', 'Сангалхос'),
('Баскетбол', 'ДеПол Блю Даймонс (жен) — Нотр-Дам Файтинг Айриш (жен) с ОТ ', 'live/Basketball/165593-WNCAA/148335225-DePaul-Blue-Demons-Women-Notre-Dame-Fighting-Irish-Women', 'ДеПол Блю Даймонс (жен)+Нотр-Дам Файтинг Айриш (жен)', '1xbet', 1513543683, NULL, 'ДеПол Блю Даймонс (жен)', ' Нотр-Дам Файтинг Айриш (жен)', 'ДеПол Блю Даймонс (жен)', 'Нотр-Дам Файтинг Айриш (жен)'),
('Баскетбол', 'Джордж Вашингтон (жен) — Американ Иглс (жен) с ОТ ', 'live/Basketball/165593-WNCAA/148339537-George-Washington-Women-American-Eagles-Women', 'Джордж Вашингтон (жен)+Американ Иглс (жен)', '1xbet', 1513543683, NULL, 'Джордж Вашингтон (жен)', ' Американ Иглс (жен)', 'Джордж Вашингтон (жен)', 'Американ Иглс (жен)'),
('Баскетбол', 'Джорджия Тех Йеллов Джекетс (жен) — Джорджия (жен) с ОТ ', 'live/Basketball/165593-WNCAA/148335311-Georgia-Tech-Yellow-Jackets-Women-Georgia-Women', 'Джорджия Тех Йеллов Джекетс (жен)+Джорджия (жен)', '1xbet', 1513543683, NULL, 'Джорджия Тех Йеллов Джекетс (жен)', ' Джорджия (жен)', 'Джорджия Тех Йеллов Джекетс (жен)', 'Джорджия (жен)'),
('Баскетбол', 'Дрексел Драгонс (жен) — Сент-Джозефс (жен) с ОТ ', 'live/Basketball/165593-WNCAA/148337676-Drexel-Dragons-Women-St-Josephs-Women', 'Дрексел Драгонс (жен)+Сент-Джозефс (жен)', '1xbet', 1513543683, NULL, 'Дрексел Драгонс (жен)', ' Сент-Джозефс (жен)', 'Дрексел Драгонс (жен)', 'Сент-Джозефс (жен)'),
('Баскетбол', 'Корнелл Рэмс — Небраска-Омаха Маверикс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148339842-Cornell-Rams-Nebraska', 'Корнелл Рэмс+Небраска-Омаха Маверикс', '1xbet', 1513543626, NULL, 'Корнелл Рэмс', ' Небраска-Омаха Маверикс', 'Корнелл Рэмс', 'Небраска-Омаха Маверикс'),
('Баскетбол', 'Легия — Домброва-Гурнича с ОТ ', 'live/Basketball/110519-Poland-Tauron-Basket-Lig/148339504-Legia-Warszawa-MKS-Dabrowa-Gornicza', 'Легия+Домброва-Гурнича', '1xbet', 1513543683, NULL, 'Легия', ' Домброва-Гурнича', 'Легия', 'Домброва-Гурнича'),
('Баскетбол', 'Липскомб — Абилин Крисчен Уайлдкэтс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148339461-Lipscomb-Bisons-Abile', 'Липскомб+Абилин Крисчен Уайлдкэтс', '1xbet', 1513543626, NULL, 'Липскомб', ' Абилин Крисчен Уайлдкэтс', 'Липскомб', 'Абилин Крисчен Уайлдкэтс'),
('Баскетбол', 'Манреса — Оуренсе с ОТ ', 'live/Basketball/258485-Spain-Adecco-Oro/148335752-La-Bruixa-Dor-Manresa-Ourense', 'Манреса+Оуренсе', '1xbet', 1513543683, NULL, 'Манреса', ' Оуренсе', 'Манреса', 'Оуренсе'),
('Баскетбол', 'Менс Сана Сиена — Риети с ОТ ', 'live/Basketball/987107-Italy-Serie-A2/148340938-Mens-Sana-Siena-Rieti', 'Менс Сана Сиена+Риети', '1xbet', 1513543683, NULL, 'Менс Сана Сиена', ' Риети', 'Менс Сана Сиена', 'Риети'),
('Баскетбол', 'Младость Земун II — БТЦ с ОТ ', 'live/Basketball/1365201-Serbia-Region-League-2/148340804-Mladost-Zemun-II-BTC', 'Младость Земун II+БТЦ', '1xbet', 1513543683, NULL, 'Младость Земун II', ' БТЦ', 'Младость Земун II', 'БТЦ'),
('Баскетбол', 'Морнар Бар — Црвена Звезда с ОТ ', 'live/Basketball/5226-ABA-League/148335813-Mornar-Bar-Crvena-zvezda', 'Морнар Бар+Црвена Звезда', '1xbet', 1513543683, NULL, 'Морнар Бар', ' Црвена Звезда', 'Морнар Бар', 'Црвена Звезда'),
('Баскетбол', 'Оливайш — Майа II с ОТ ', 'live/Basketball/1122939-Portugal-Division-1/148337539-Olivais-Maia-II', 'Оливайш+Майа II', '1xbet', 1513543683, NULL, 'Оливайш', ' Майа II', 'Оливайш', 'Майа II'),
('Баскетбол', 'Провиденс Фрайэс — Стони Брук с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148340414-Providence-Friars-Sto', 'Провиденс Фрайэс+Стони Брук', '1xbet', 1513543626, NULL, 'Провиденс Фрайэс', ' Стони Брук', 'Провиденс Фрайэс', 'Стони Брук'),
('Баскетбол', 'Спорт Алжеш и Дафундо — Одиссея с ОТ ', 'live/Basketball/1122939-Portugal-Division-1/148337584-Sport-Alges-Dafundo-Odisseia', 'Спорт Алжеш и Дафундо+Одиссея', '1xbet', 1513543683, NULL, 'Спорт Алжеш и Дафундо', ' Одиссея', 'Спорт Алжеш и Дафундо', 'Одиссея'),
('Баскетбол', 'Фурман Паладинс — УНК Уилмингтон Сеахокс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148339786-Furman-Paladins-UNC-W', 'Фурман Паладинс+УНК Уилмингтон Сеахокс', '1xbet', 1513543626, NULL, 'Фурман Паладинс', ' УНК Уилмингтон Сеахокс', 'Фурман Паладинс', 'УНК Уилмингтон Сеахокс'),
('Баскетбол', 'Хай Поинт Пэнтерс — Уоффорд Терьерс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148339764-High-Point-Panthers-W', 'Хай Поинт Пэнтерс+Уоффорд Терьерс', '1xbet', 1513543626, NULL, 'Хай Поинт Пэнтерс', ' Уоффорд Терьерс', 'Хай Поинт Пэнтерс', 'Уоффорд Терьерс'),
('Баскетбол', 'Холи Фэмили Тайгерз — Сейнт-Томас Аквайнас Спартанс с ОТ ', 'live/Basketball/1401965-USA-NCAA-Division-2/148339319-Holy-Family-Tigers-Saint-Thomas-Aquinas-Sparta', 'Холи Фэмили Тайгерз+Сейнт-Томас Аквайнас Спартанс', '1xbet', 1513543626, NULL, 'Холи Фэмили Тайгерз', ' Сейнт-Томас Аквайнас Спартанс', 'Холи Фэмили Тайгерз', 'Сейнт-Томас Аквайнас Спартанс'),
('Баскетбол', 'Централ Арканзас Биарс — Морхэд Стэйт Иглс с ОТ ', 'live/Basketball/124789-National-Collegiate-Athletic-Association-NCAA/148339534-Central-Arkansas-Bear', 'Централ Арканзас Биарс+Морхэд Стэйт Иглс', '1xbet', 1513543626, NULL, 'Централ Арканзас Биарс', ' Морхэд Стэйт Иглс', 'Централ Арканзас Биарс', 'Морхэд Стэйт Иглс'),
('Баскетбол', 'Црвена Звезда (жен) — Врбас Медела (жен) с ОТ ', 'live/Basketball/973191-Serbia-ZSL-Women/148339552-Crvena-zvezda-Women-ZKK-Vrbas-Medela-Women', 'Црвена Звезда (жен)+Врбас Медела (жен)', '1xbet', 1513543683, NULL, 'Црвена Звезда (жен)', ' Врбас Медела (жен)', 'Црвена Звезда (жен)', 'Врбас Медела (жен)'),
('Баскетбол', 'Южный Миссури Лайонс — Труман Стэйт Буллдогз с ОТ ', 'live/Basketball/1401965-USA-NCAA-Division-2/148340157-Missouri-Southern-Lions-Truman-State-Bulldogs', 'Южный Миссури Лайонс+Труман Стэйт Буллдогз', '1xbet', 1513543683, NULL, 'Южный Миссури Лайонс', ' Труман Стэйт Буллдогз', 'Южный Миссури Лайонс', 'Труман Стэйт Буллдогз');

--
 
  • Спасибо
Реакции: volody00 и seodamage

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Тут подготавливать запрос надо. Не совсем то, что я имел в виду.

Пробую такой вариант:
LOAD DATA INFILE "file.txt" INTO TABLE `table`;
Но как не правил конфиг сервера все равно выдаешь ошибку:
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
47
Баллы
18
Тогда используйте:
LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
На это тоже ругается что в данной версии MySQL 5.6 не поддерживается. Странно.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Разобрался. В настройках MySQL сервер надо было включить данную опцию. Может кому пригодиться на будущее.

Таким запросом загружаем данные из файла в таблицу table ячейку col1

LOAD DATA LOCAL INFILE "C:/path/to/file/file.txt" INTO TABLE `table` (coll);
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
Разобрался. В настройках MySQL сервер надо было включить данную опцию. Может кому пригодиться на будущее.

Таким запросом загружаем данные из файла в таблицу table ячейку col1
У меня такая же проблема. В настройках сервера указан путь secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"
Если загружаю файлы из этой папки вручную (использую Navicat) то все нормально. Если же использую
LOAD DATA INFILE secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/myfile.txt" INTO TABLE mytable выдает ошибку как у тебя.
Ячейки таблицы не указываю. Файл имеет структуру как у таблицы. Пробовал даже сохранить несколько записей в файл. Потом добавить из него и та же ошибка.
Пока забил на это, добавляю записи через INSERT и UPDATE. Время конечно тратится на это много.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
А в конфиге MySQL строка secure-file-priv закоментирована?
Не правильный запрос.
LOAD DATA INFILE secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/myfile.txt" INTO TABLE mytable
Так правильно будет.
LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/myfile.txt" INTO TABLE mytable
И вот так можно попробовать.
LOAD DATA LOCAL INFILE "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/myfile.txt" INTO TABLE mytable
 
Последнее редактирование:

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
А в конфиге MySQL строка secure-file-priv закоментирована?
Не правильный запрос.

Так правильно будет.

И вот так можно попробовать.
Я пробывал оба варианта который ты предложил. Я привел пример неверно из-за копипаста.
Строка secure-file-priv раскомментирована. Ее нужно закомментировать? Я несколько месяцев назад
сталкивался с этой проблемой, на каком-то англоязычном форуме находил решение. Там нужно было внести
несколько изменений в файл с настройками. Пришлось переустановить мускул, что вносить забыл и форум этот
найти не могу). У тебя строка secure-file-priv закоментирована?
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Да, эту строку надо закоментировать в my.ini.
 
  • Спасибо
Реакции: Rooter85

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
Да, эту строку надо закоментировать в my.ini.
Все заработало. Я думал что наоборот нужно чтобы было раскоментировано, тогда если файл лежит в этой папке то
используем LOAD DATA INFILE. А если в какой-то другой то LOAD DATA LOCAL INFILE.
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
А какие есть варианты добавить в БД список из переменной или по URL?

Эти конструкции не работают:

LOAD DATA INFILE "{-Variable.PROXY_LIST_FILE-}" INTO TABLE mytable
LOAD DATA INFILE "{-Variable.PROXY_LIST_URL-}" INTO TABLE mytable
LOAD DATA INFILE "http://domain.com/proxylist.txt" INTO TABLE mytable
В данный момент я полученные данные складываю в файл, потом только гружу в БД. Не всегда срабатывает т.к. зенка в файл пишет с не прогнозируемой задержкой.
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
64
Баллы
28
А если сразу привязать список к файлу, сильно замедляет работу?
Я так делаю. Это точно намного быстрее чем заполнять БД из списка построчно.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Пробовал и с привязкой к файлу. Результат тот же, надо ждать пока данные полученные по URL скинуться в файл и только потом пихать их в БД. В данный момент стоит пауза 30сек, но иногда этого времени не хватает.

Нужно решение минуя сохранение данных в файл запихивать их в БД. Пока ничего путного не нашел.
 

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
164
Баллы
43
Возможно поможет решение, котрым я пользуюсь
1. Объединяю данные списка в переменную

2. В переменной делаю замену конца строк на '), (' - (нужно для правильности строк при запросе)
3. Добавляю кавычки 'и) - (нужно для правильности строк при запросе)
4. Отправляю запрос в БД

Таким образом в столбец БД `items_url` добавляется содержимое списка, каждая запись с новой строки
Скрины из рабочего проекта - собираются ссылки - одним запросом добавляются 100-200 строк списка
 

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
300
Благодарностей
49
Баллы
28
А кто в курсе как загрузить целую таблицу одним запросом?

Зенно таблицу или таблицу, привязанную к файлу это не важно - главное, чтобы одним запросом закинуть её в БД.
Такое возможно?
 

boorik2

Client
Регистрация
10.04.2017
Сообщения
202
Благодарностей
62
Баллы
28

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Смотри синтаксис input
Но есть ограничение на длину запроса так что это нужно учитвать
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
А кто в курсе как загрузить целую таблицу одним запросом?

Зенно таблицу или таблицу, привязанную к файлу это не важно - главное, чтобы одним запросом закинуть её в БД.
Такое возможно?
Из шелла можно, если привести таблицу к экспортному формату .sql:
Код:
mysql -u user -p password database < database.sql
 

Rogan73

Новичок
Регистрация
06.02.2019
Сообщения
2
Благодарностей
0
Баллы
1
Вот простой метод:
Добиваемся чтобы список был в текстовом виде по строкам:
Ciutat Vella
Eixample
Extramurs
Campanar

Потом Excel вам в помощь!
INSERT INTO `zonas` (`name`) values
("Ciutat Vella"),
("Eixample"),
("Extramurs"),
("Campanar")
[TBODY] [/TBODY]
В первой колонке лепим ("
вторая вставляем наш список
третья "),
кроме последней там просто ")
выделит текст, скопировать , в PhpMyAdmin вставить.

excel.jpg
 

Rogan73

Новичок
Регистрация
06.02.2019
Сообщения
2
Благодарностей
0
Баллы
1

CJeyZ

Client
Регистрация
12.04.2019
Сообщения
30
Благодарностей
2
Баллы
8
Возможно поможет решение, котрым я пользуюсь
1. Объединяю данные списка в переменную

2. В переменной делаю замену конца строк на '), (' - (нужно для правильности строк при запросе)
3. Добавляю кавычки 'и) - (нужно для правильности строк при запросе)
4. Отправляю запрос в БД

Таким образом в столбец БД `items_url` добавляется содержимое списка, каждая запись с новой строки
Скрины из рабочего проекта - собираются ссылки - одним запросом добавляются 100-200 строк списка
Огроменное тебе спасибо друг! Выручил! До этого у меня на создание запроса через C# уходило на не один час, а ты выдал простое решение работающее считанные секунды. И кстати, за один запрос у меня добавилось в таблицу 1 600 000 строк.
 

sashf1999

Client
Регистрация
04.01.2019
Сообщения
37
Благодарностей
11
Баллы
8
Раньше тоже использовал запросы, но щас нашел orm библиотеку "linq2db" с помощью которой можно всё это упростить. Так же имеется тут метод с помощью которого можно список или массив в одну строку поместить в бд. Библиотека поддерживает многое количество БД, модно найти в nuget ее и примеров куча на github. Работать очень просто, создаём модель БД и с ней работает посредством LINQ
 
  • Спасибо
Реакции: Rooter85

dimanis

Client
Регистрация
16.04.2016
Сообщения
195
Благодарностей
110
Баллы
43
Огроменное тебе спасибо друг! Выручил! До этого у меня на создание запроса через C# уходило на не один час, а ты выдал простое решение работающее считанные секунды. И кстати, за один запрос у меня добавилось в таблицу 1 600 000 строк.
Что ты как то обманываешь 1,6кк строк за один запрос INSERT))
 

uuw

Client
Регистрация
04.06.2020
Сообщения
146
Благодарностей
54
Баллы
28
  • Спасибо
Реакции: seodamage

CJeyZ

Client
Регистрация
12.04.2019
Сообщения
30
Благодарностей
2
Баллы
8
Он урок прогулял в школе, где про max_allowed_packet говорили
Теперь цыганские сказки рассказывает
Что ты как то обманываешь 1,6кк строк за один запрос INSERT))
Не являюсь знатоком SQLя, соответственно и доказывать вам нечего. Человек поделился способом, который мне помог осилить такой объем. Кому надо тот проверит:-)
PS тем же способом импортировал 15к строк. Понятия не имею какие там лимиты
 

blinkO_o

Client
Регистрация
16.05.2017
Сообщения
17
Благодарностей
2
Баллы
3
Возможно поможет решение, котрым я пользуюсь
1. Объединяю данные списка в переменную

2. В переменной делаю замену конца строк на '), (' - (нужно для правильности строк при запросе)
3. Добавляю кавычки 'и) - (нужно для правильности строк при запросе)
4. Отправляю запрос в БД

Таким образом в столбец БД `items_url` добавляется содержимое списка, каждая запись с новой строки
Скрины из рабочего проекта - собираются ссылки - одним запросом добавляются 100-200 строк списка

А если в строке или в файле содержатся данные на 2 столбца как быть?

у меня список с переменными А есть и есть значение Б которое надо подставить в БД

1 столбец - Б
2 столбец - А

и таких значений около 150к. подскажи как реализовать.
 

finista

Client
Регистрация
10.10.2012
Сообщения
365
Благодарностей
57
Баллы
28
Тоже очень интересно
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
118
Баллы
43
А если в строке или в файле содержатся данные на 2 столбца как быть?

у меня список с переменными А есть и есть значение Б которое надо подставить в БД

1 столбец - Б
2 столбец - А

и таких значений около 150к. подскажи как реализовать.
Маппинг имен столбцов
Можно указать явно список и порядок столбцов которые имеются в БД.

К примеру есть Имя и Фамилия список который нужно загрузить в таблицу
ИмяФамилия
VayaIvanov
IvanVasin
........

Нужно загрузить в таблицу Фамилия, Имя (изменить порядок столбцов)
Load data with colums:
LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata
(Фамилия,Имя,...);

Пропустить столбцы
1 .В данном примере имея к загрузке таблицу 1, 2, 3, 4, 5 загружены будут лишь столбцы 1, 3, 5 в то время как 2, 4 просто про игнорируются не смотря на то что они присутствуют в исходном csv который грузим

skip_colum_2+4:
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);
2. Пример как добавить только Б если А уже заполнен в бд
upload only B:
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (@dummy, columnB);

Используя коннектор
Ну и также можно использовать mysql.connect офф либу, которая умеет доп. фичи при использовании MySqlBulkLoader
Load_data_c#:
/* Table
CREATE TABLE Career (
       Name VARCHAR(100) NOT NULL,
       Age INTEGER,
       Profession VARCHAR(200)
);
*/

/* Table Career in Test Database

Name  Age  Profession

Tony   47  Technical Writer
Ana    43  Nurse
Fred   21  IT Specialist
Simon  45  Hairy Biker
*/


using System;
using System.Text;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            string connStr = "server=localhost;user=root;database=test;port=3306;password=******";
            MySqlConnection conn = new MySqlConnection(connStr);

            MySqlBulkLoader bl = new MySqlBulkLoader(conn);
            bl.Local = true;
            bl.TableName = "Career";
            bl.FieldTerminator = "\t";
            bl.LineTerminator = "\n";
            bl.FileName = "c:/career_data.txt";
            bl.NumberOfLinesToSkip = 3;

            try
            {
                Console.WriteLine("Connecting to MySQL...");
                conn.Open();

                // Upload data from file
                int count = bl.Load();
                Console.WriteLine(count + " lines uploaded.");

                string sql = "SELECT Name, Age, Profession FROM Career";
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                MySqlDataReader rdr = cmd.ExecuteReader();

                while (rdr.Read())
                {
                    Console.WriteLine(rdr[0] + " -- " + rdr[1] + " -- " + rdr[2]);
                }

                rdr.Close();

                conn.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            Console.WriteLine("Done.");
        }
    }
}
 
  • Спасибо
Реакции: one и morpheus93

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
...

UPD
походу надо было увеличить количество символов в самой БД до бесконечности ) (999999)
теперь список добавляет без подготовки
 
Последнее редактирование:

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)