将文本文件内容插入mysql中的列

时间:2013-09-30 06:30:17

标签: mysql

我想将文本文件数据插入到我的表列中。 为此,我使用以下代码。

INSERT INTO uncompress 
(stamp, what) VALUES 
(NOW(), LOAD_FILE('D:/test.txt'));

但它在'what'列中插入了空数据。 请帮我。提前致谢

2 个答案:

答案 0 :(得分:1)

MySQL LOAD_FILE()读取文件并以字符串的形式返回文件内容。

要使用此功能,文件必须位于主机服务器上,用户必须指定文件的完整路径名,并且用户必须具有FILE权限。该文件必须是可读的,并且大小必须小于max_allowed_pa​​cket(在my.ini文件中设置)字节。

如果文件不存在或无法读取,则返回NULL。

答案 1 :(得分:0)

您正在寻找load data infile

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

示例:

CREATE TABLE `mytable` (
    `Account` VARCHAR(255) NOT NULL,
    `Month` DATE NOT NULL,
    `Device` VARCHAR(255) NOT NULL,
    `Campaign` VARCHAR(128) NOT NULL,
    `Keyword` VARCHAR(255) NOT NULL,
    `Customer_ID` VARCHAR(255) NOT NULL,
    `Keyword_state` VARCHAR(255) NOT NULL,
    `Match type` VARCHAR(255) NOT NULL,
    `Max_CPC` DECIMAL(10,5) NOT NULL,
    `Clicks` INT(11) NOT NULL,
    `Impressions` INT(11) NOT NULL,
    `CTR` VARCHAR(255) NOT NULL,
    `avg_CPC` DECIMAL(10,5) NOT NULL,
    `avg_CPM` VARCHAR(255) NOT NULL,
    `Cost` VARCHAR(255) NOT NULL,
    `avg_Pos` DECIMAL(10,5) NOT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;



LOAD DATA LOW_PRIORITY LOCAL INFILE 
'C:\\Users\\Adr\\Desktop\\Keyword performance report.csv' 
REPLACE INTO TABLE `mydatabase`.`mytable` 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(`Account`, `Month`, `Device`, `Campaign`, `Keyword`, `Customer_ID`, `Keyword_state`, `Match type`, `Max_CPC`, `Clicks`, `Impressions`, `CTR`, `avg_CPC`, `avg_CPM`, `Cost`, `avg_Pos`);
在5.078秒内导入

/ * 133,999行。 * /