MSSQL для удаленных строк MySQL 700k - PullRequest
1 голос
/ 09 декабря 2011

Мне нужен совет по передаче большого количества данных в базу данных MySQL, размещенную удаленно. (GoDaddy)

Я получил CSV-файл на 700 тыс. Строк, импортировал его в MSSQL на своем компьютере разработчика и написал несколько быстрых утилит.

Первым было создать CSV-файлы меньшего размера (1 мегабайт), которые можно было напрямую импортировать через PhpMyAdmin. максимум 1 мег http://xtubedownloads.com/public/starfield.png

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

Далее я попытался использовать коннектор MySQL .NET и перенести напрямую через ODBC из MS Access и MS Excel. Это не удалось.

Наконец, я написал WinNET-приложение .NET, которое получает данные из моей локальной базы данных SQL Server, а затем обновляет удаленную базу данных MySQL с помощью стандартных запросов вставки с использованием сборок данных .NET MySQL.

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

(я пытался увеличить до 10 потоков и запустить несколько экземпляров приложения, но эти передачи - это переполнение памяти, и 4 - это почти все, что моя машина может взять без проблем)

Я локально установил инструменты администрирования mysql (MySQL WorkBench 5.2CE), надеясь каким-то образом передать данные MSSQL через инструмент администрирования mysql. Невозможно это сделать.

Все попытки машинного ODBC терпят неудачу при использовании стандартных инструментов, таких как MSAcess и MSExcel. (Может быть, какие-то проблемы с настройкой Godaddy или тот факт, что я использую 64-битную ОС и инструменты Mysql odbc 32?)

У меня есть возможность удаленного подключения к MySQL-серверу Godaddy, так что моя единственная другая идея - поместить 700k записей в базу данных Access на сервере и создать 10 или 20 служб WCF для вставки в MySQL. база данных.

Возможно, устранение задержки передачи каждого ряда по проводу значительно увеличит скорость вставки?

Существует метод, который более эффективен, чем у меня сейчас, - машина, работающая 24/7 в течение нескольких дней только для вставки записей.

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Что-то вроде этого:

  • Используйте сценарий php для извлечения сжатой версии файла SQL (скажем, file_get_contents ()) и сохранения ее на локальном сервере MySQL. Вы должны быть в состоянии загрузить больше данных, чем вы могли бы использовать формы загрузки HTML. Я предполагаю, что вы не можете сделать это через FTP, кстати:)

  • Используйте Bigdump , пошаговый инструмент импорта, чтобы импортировать данные в MySQL по частям. Таким образом вы избежите таймаута / других связанных с этим проблем.

Удачи!

0 голосов
/ 05 июля 2013

Все попытки машинного ODBC терпят неудачу при использовании стандартных инструментов, таких как MSAcess и MSExcel.(Могут быть какие-то проблемы с настройкой Godaddy или тот факт, что я использую 64-битную ОС, а Mysql odbc - 32?)из 32-битного, который находится в меню инструментов администрирования.

Я обнаружил, что Heidi Sql весьма полезен для подключения к базам данных MySQL и MsSQL.http://www.heidisql.com

...