Массовая загрузка SQL - PullRequest
       2

Массовая загрузка SQL

1 голос
/ 11 февраля 2011

Есть ли способ массовой загрузки данных в таблицу SQL без использования функции INSERT для каждой строки? Я использую mySQL.

В настоящее время у меня есть программа, которая постоянно извлекает живые данные из Интернета и сохраняет их в базе данных. При этом он стирает таблицу, а затем помещает новые данные. Когда он делает это, он делает это по очереди за раз. Это было бы хорошо, за исключением того, что другие программы извлекают эти данные в асинхронное время, и поэтому нет гарантии, что они соберут полную таблицу. Иногда он вытягивает 10 строк, 20 и т. Д. Если есть способ, которым я мог бы вставить все строки сразу, так, чтобы другие программы потянули 0 (сразу после удаления таблицы) или все строки, которые были бы удивительными.

Спасибо, и любые мысли высоко ценится!

Ответы [ 3 ]

1 голос
/ 11 февраля 2011

Если тип таблицы MySQL - InnoDB, просто используйте транзакцию.Тогда все обновления будут видны одновременно, когда вы фиксируете.

0 голосов
/ 11 февраля 2011

Продолжение альтернативного решения Эрика. Другой способ сделать это, вместо временной таблицы, - это ввести даты вступления в силу. SQL для доступа к таблице изменится так, что он выберет самую последнюю дату для фрагментов данных. Если обновление выполняется на полпути, выбор должен получить половину новых данных и половину старых данных. Как только новые данные поступят, вы можете свободно удалить старые данные.

0 голосов
/ 11 февраля 2011

Вы можете использовать LOAD DATA INFILE , чтобы быстро загрузить таблицу из файла.

Если вы обеспокоены тем, что клиенты получают частичное представление данных, самый простой способ избежать этого - выполнить загрузку во временную таблицу, а затем выполнить какое-то переименование таблицы , чтобы изменения появились быть мгновенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...