Чтобы эффективно читать дамп данных SO - PullRequest
2 голосов
/ 18 июля 2009

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

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

Проблемы

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

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

-

[править]

  1. Как вы можете запустить 523 SQL-запросов , чтобы создать базу данных в вашем терминале? В данный момент у меня есть команды в текстовом файле.
  2. Как вы можете "переключиться в [режим восстановления] в простой режим восстановления в базе данных?

1 Ответ

2 голосов
/ 18 июля 2009

Я создал свою первую программу на python, которая их читала и выводила операторы вставки 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...