我目前正在嘗試開發一個查詢文本信息的站點。我已經擁有了我需要的所有文本文件,但我對數據庫完全陌生,並且不知道從哪裏開始。從哪裏開始將文本文件轉換爲數據庫?
我知道我需要解析文本文件並將它們插入到數據庫中,但我在網上找到的大多數信息都指向了某種SQL服務器在線。我將如何解析文本文件並將它們插入到數據庫中,並作爲回報,將它們移植到網站上?一個地方開始會很棒,我完全失去了):
我在Java和Python方面有點經驗,熟悉CSS/HTML。
我目前正在嘗試開發一個查詢文本信息的站點。我已經擁有了我需要的所有文本文件,但我對數據庫完全陌生,並且不知道從哪裏開始。從哪裏開始將文本文件轉換爲數據庫?
我知道我需要解析文本文件並將它們插入到數據庫中,但我在網上找到的大多數信息都指向了某種SQL服務器在線。我將如何解析文本文件並將它們插入到數據庫中,並作爲回報,將它們移植到網站上?一個地方開始會很棒,我完全失去了):
我在Java和Python方面有點經驗,熟悉CSS/HTML。
這是一個很大的工作(很多數據)還是你剛剛接觸它?
如果你有大量的數據的考慮操縱您的文件做一個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`;
我沒有測試所有的,但希望它指向您在正確的方向。
祝你好運。
MySQL的full-text search是第一次嘗試。它可能足夠滿足你所需要的。使用this example作爲您可能需要的模板。
簡而言之,你可能根本就不解析文件。只需標識文檔標題和文檔正文,然後將其作爲兩個單獨的字段插入到表格行中即可。如果有格式化或其他元內容,可能會在插入之前將其刪除。
對不起,我對數據庫很陌生,但我對如何使用全文搜索有點困惑。我擁有的文本文件是按鍵組織的(即John Doe),每個文本文件都包含John Doe上的一段短文。你能詳細談談我如何將所有這些文本文件合併到一個表中嗎?也許我只需要先了解更多關於數據庫的知識。 – zhuyxn 2012-03-26 06:34:05
@zhuyxn:想象一個電子表格:一張表是一個「數據庫表」。電子表格行對應於一個d/b行。一列是指單個字段。數據庫查詢匹配行標準並選擇要顯示的特定字段。簡單。在A列中放置「鍵」,在B列中放置文本。全文是您習慣使用Google搜索的地方,它將重要單詞標識爲文檔更獨特。我給出的示例與您的使用完全相符 - 除非每個文檔有多個關鍵字。 – wallyk 2012-03-26 06:38:29
哦,這很有道理,謝謝!我仍然對如何將所有東西鏈接在一起感到困惑。一旦我得到了一個數據庫/表格,有關如何將其轉換爲可搜索網頁的任何提示? – zhuyxn 2012-03-26 07:14:57
您是否擁有文本文件中的結構化數據? – 2012-03-26 05:52:02
您需要首先創建您的數據庫,製作表格並組織它們,然後再擔心插入值。 – 2012-03-26 05:56:56