2009-07-18 4 views
2

В настоящее время я использую Vim для чтения SO's data dump. Тем не менее, мой Macbook замедляется, когда я скатываю всего несколько строк. Это говорит о том, что должны быть более эффективные способы чтения данных.Для эффективного считывания данных SO's

Я мало знаю MySQL. Файлы находятся в формате .xml -format. В настоящее время довольно сложно читать данные в формате .xml. Возможно, более эффективно преобразовать xml-файлы в MySQL и затем прочитать файлы. Я знаю только MS db -tool для таких действий. Однако я хотел бы узнать еще один инструмент.

Проблемы

  1. для разбора XML-к SQL -queries таким образом, что MySQL понимает. Нам нужно знать структуры данных данных.
  2. для запуска данных в MySQL
  3. найти какой-то инструмент, похожий на MS DB -tool, с помощью которого мы можем прочитать данные эффективно

Как вы читаете SO свои данные дамп эффективно?

-

[править]

  1. Как вы можете запустить 523 SQL queries создать базу данных в терминале? У меня есть команды в текстовом файле.
  2. Как вы можете «перейти на [режим восстановления] в простом режиме восстановления в базе данных?
+0

Что ваша цель? Очевидно, что если у вас есть доступ к интернету, самый простой способ чтения Переполнение стека находится на самом веб-сайте. Возможно, вы ищете автономный доступ ко всем текстовым сообщениям? Или вы хотите сделать некоторые анализы данных после их загрузки в база данных? –

+0

@Greg: Я хотел бы сделать некоторый анализ данных после его загрузки в базу данных. –

+0

Эта тема решает проблему # 1: http://stackoverflow.com/questions/1147955/to-run-a-sql-file-in-mysql –

ответ

2

Я сделал свою первую программу, когда питон, чтобы прочитать их и выходных операторов SQL вставки для использования с MySQL (это некрасиво, но работал). Вам нужно создать таблицы первых, хотя вручную.

import xml.sax.handler 
import xml.sax 
import sys 
class SOHandler(xml.sax.handler.ContentHandler): 
     def __init__(self): 
       self.errParse = 0 

     def startElement(self, name, attributes): 
       if name != "row": 
         self.table = name; 
         self.outFile = open(name+".sql","w") 
         self.errfile = open(name+".err","w") 
       else: 
         skip = 0 
         currentRow = u"insert into "+self.table+"(" 
         for attr in attributes.keys(): 
           currentRow += str(attr) + "," 
         currentRow = currentRow[:-1] 
         currentRow += u") values (" 
         for attr in attributes.keys(): 
           try: 
             currentRow += u'"{0}",'.format(attributes[attr].replace('\\','\\\\').replace('"', '\\"').replace("'", "\\'")) 
           except UnicodeEncodeError: 
             self.errParse += 1; 
             skip = 1; 
             self.errfile.write(currentRow) 
         if skip != 1: 
           currentRow = currentRow[:-1] 
           currentRow += u");" 
           #print len(attributes.keys()) 
           self.outFile.write(currentRow.encode("utf-8")) 
           self.outFile.write("\n") 
           self.outFile.flush() 
           print currentRow.encode("utf-8"); 

     def characters(self, data): 
       pass 

     def endElement(self, name): 
       pass 

if len(sys.argv) < 2: 
     print "Give me an xml file argument!" 
     sys.exit(1) 

parser = xml.sax.make_parser() 
handler = SOHandler() 
parser.setContentHandler(handler) 
parser.parse(sys.argv[1]) 
print handler.errParse 
+0

Ваш код анализирует XML-синтаксис и преобразует синтаксис, по-видимому, в HTML. --- Как вам удалось разместить, например, post.xml в MySQL после запуска его. --- У меня есть файл posts.sql. --- Я бегу безуспешно: 'mysql -D posts.sql'. –

+0

Я запускаю 'sudo mysql; \./users/cs/SO_db/posts.sql'. Я получаю много следующего сообщения об ошибке: «ERROR 1046 (3D000): не выбрана база данных». –

+0

@ После выбора базы данных я получаю следующую ошибку: «ERROR 1146 (42S02): Таблица« personal.posts »не существует» –

Смежные вопросы