2015-04-13 3 views
-1

Я хотел бы создать базу данных sqlite3 для использования с использованием python. Я использую набор данных ArnetMiner, где есть «блоки» данных для каждого объекта. Описание А Блок выглядит следующим образом:Импорт блоков данных в txt-файл в базу данных sqlite3

#* --- paperTitle 
    #@ --- Authors 
    #year ---- Year 
    #conf --- publication venue 
    #citation --- citation number (both -1 and 0 means none) 
    #index ---- index id of this paper 
    #arnetid ---- pid in arnetminer database 
    #% ---- the id of references of this paper (there are multiple lines, with each indicating a reference) 
    #! --- Abstract 

Ниже приведен пример:

#*Spatial Data Structures. 
#@Hanan Samet,Wei Lee Chang,Jose Fernandez 
#year1995 
#confModern Database Systems 
#citation2743 
#index25 
#arnetid27 
#%165 
#%356 
#%786754 
#%3243 
#!An overview is presented of the use of spatial data structures in spatial databases. The focus is on hierarchical data structures, including a number of variants of quadtrees, which sort the data with respect to the space occupied by it. Such techniques are known as spatial indexing methods. Hierarchical data structures are based on the principle of recursive decomposition. 

Вот мой вопрос:

Как импортировать это в таблицу sqlite3, который я создал?

Обычно набор данных я использую только разделены табуляцией, так что я просто скажу ниже после создания таблицы:

.separator "\t" 
.import Data.txt table_name 

я создал таблицы следующим образом:

CREATE TABLE publications (
    PaperTitle varchar(150), 
    Year int, 
    Conference varchar(150), 
    Citations int, 
    ID int primary key, 
    arnetId int, 
    Abstract text 
); 

CREATE TABLE authors (
    ID int primary key, 
    Name varchar (100) 
); 

CREATE TABLE authors_publications (
    PaperID int, 
    AuthorID int 
); 

CREATE TABLE publications_citations (
    PaperID int, 
    CitationID int 
); 

В принципе, я думаю, я спрашиваю, есть ли быстрый способ импортировать набор данных в таблицы базы данных, которые я создал? Или мне придется писать скрипт python и вставлять каждый блок за раз?

+1

Я не думаю, что sqlite3 сможет убрать префиксы (например, 'year1995'), я думаю, что лучше всего написать сценарий, чтобы сделать что-то вроде [this] (http: // stackoverflow .com/a/7137270/322909), вероятно, ваш лучший выбор. – John

+0

Нет ничего плохого в написании сценария импорта python. –

ответ

0

Лучший способ сделать это - проанализировать данные и переписать их в файлы csv и просто импортировать их непосредственно в таблицы моей базы данных.

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