通过mysql存储过程以附加模式访问文本文件

时间:2013-11-26 11:14:38

标签: mysql

是否可以通过mysql存储过程访问文本文件。 我需要在追加模式下打开一个文本文件,并通过该过程在文件的末尾插入一个新行

基本上我是按LOAD INTO OUTFILE写一个表的数据。但要求是,在我完成之后,我需要额外换行。我当前的文件如下所示。

1|4700|00000036||20|5.00|20131123125826|183669|; 2|4700|00000037||20|5.00|20131123142638|155207|; 1|4700|00000038||20|5.00|20131123184917|663554|; 2|4700|00000039||20|5.00|20131123191402|416464|; 1|4700|00000040||20|2.30|20131123203542|260932|;

在此之后我需要换行。

1 个答案:

答案 0 :(得分:0)

您可能已经发现无法使用SELECT INTO OUTFILE附加到文件中。有很多方法可以使用shell脚本并运行mysql命令行客户端,但是您希望在存储过程中执行此操作,因此您无法执行此操作。

在存储过程中执行此操作的一种方法是将文本写入特殊表。您可以创建一个使用 CSV 引擎的表格,然后插入其中:

mysql> CREATE TABLE textfile (mytext VARCHAR(30) NOT NULL) ENGINE=CSV;
Query OK, 0 rows affected (0.14 sec)

该表存储为CSV文件,因此您可以将其作为简单文本读取并使用INSERT操作写入该文件。要向其添加文本,只需插入值。

mysql> INSERT INTO textfile VALUES ('This is the first sentence.');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO textfile VALUES ('This is the second sentence.');
Query OK, 1 row affected (0.00 sec)

因为它是CSV,所以内容看起来像这样(在我的Linux机器上):

[user@host]# cat /var/lib/mysql/test/textfile.CSV 
"This is the first sentence."
"This is the second sentence."