从文本文件转换到数据库的位置从哪里开始?

时间:2012-03-26 05:46:39

标签: mysql sql database

我目前正在尝试开发一个查询文本信息的网站。我已经拥有了我需要的所有文本文件,但我对数据库完全不熟悉,并且不知道从哪里开始。

我知道我需要解析文本文件并将它们插入到数据库中,但我在网上发现的大部分信息都指向某种SQL服务器在线。我如何解析文本文件并将它们插入到数据库中,作为回报,将它们移植到网站?一个开始的地方会很棒,我完全迷失了):

我在Java和Python方面有一定的经验,熟悉CSS / HTML。

2 个答案:

答案 0 :(得分:0)

这是一项很重要的工作(大量数据)还是刚接触它?

如果您有大量数据,请考虑操纵您的文件来执行LOAD DATA INFILE,或者如果您真的有很多操作,请考虑Jasper/Talend ETL,但我猜这是过度的。


在阅读您的评论后,我已经起草了一些脚本。

使用mysql客户端或使用工作台登录

CREATE DATABASE IF NOT EXISTS `test`;
USE test;

试试这些

DROP TABLE IF EXISTS `test`.`user`;
CREATE TABLE `test`.`user` (
  `userid` INT NOT NULL AUTO_INCREMENT   ,
  `firstname` VARCHAR(45) NOT NULL ,
  `lastname` VARCHAR(45) NOT NULL ,
  `jobdescription` TEXT NULL,
  `childhooddescription` TEXT NULL,
  PRIMARY KEY (`userid`)
);


DROP TABLE IF EXISTS `test`.`tempuser`;
CREATE  TABLE `test`.`tempuser` (
  `fullname` VARCHAR(90) NOT NULL,
  PRIMARY KEY (`fullname`)
);

-- Examples you can use
-- INSERT INTO `test`.`user` (`firstname`,`lastname`) VALUES ("bob","jones");
-- INSERT INTO `test`.`tempuser` (`fullname`) VALUES ("JOHN DOE");

INSERT INTO `test`.`user`(
  `firstname`,
  `lastname`
)
SELECT
  SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 1), ' ', -1) AS firstname,
  SUBSTRING_INDEX(SUBSTRING_INDEX(fullname, ' ', 2), ' ', -1) AS lastname
FROM
  tempuser;


SELECT * FROM `user`;

DROP TABLE IF EXISTS `tempuser`;

然后这些

DROP TABLE IF EXISTS `test`.`tempjop`;
CREATE  TABLE `test`.`tempjop` (
  `fullname` VARCHAR(45) NOT NULL,
  `description` TEXT NOT NULL
);

-- Example
-- INSERT INTO `test`.`tempjop` (`fullname`, `description`) VALUES ("JOHN DOE", "John is a programmer");


LOAD DATA INFILE 'C:/Temp/Job.txt' INTO TABLE tempjop
     FIELDS
         TERMINATED BY ':' OPTIONALLY ENCLOSED BY '"'
     LINES
         TERMINATED BY '\r\n';

SELECT
    *
FROM
    `tempjop`
;

UPDATE
    `user` AS U, 
    `tempjop` AS J
SET
    U.jobdescription = J.description
WHERE
    J.fullname = CONCAT(CONCAT(U.firstname, ' '), U.lastname)
    -- If you need first names only like 'MARY' uncomment this
    -- OR J.fullname = U.firstname;
;

SELECT * FROM `user`;

DROP TABLE IF EXISTS `tempjop`;

我还没有对所有这些进行过测试,但希望它能指出你正确的方向。

祝你好运。

答案 1 :(得分:0)

MySQL的full-text search是第一个尝试的东西。它可能足以满足您的需求。使用this example作为您可能需要的模板。

简而言之,您可能根本不解析文件。只需标识文档标题和文档正文,然后将它们作为两个单独的字段插入表格行。如果有格式或其他元内容,可能会在插入之前删除它们。