是否可以通过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|;
在此之后我需要换行。
答案 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."