hdfs外部表导出数据 --------------------- 本节通过一个简单的例子来说明如何使用hdfs外部表来导出数据。关于NULL值处理,分割符,换行符,转义字符以及编码的处理可以参考CREATE EXTERNAL TABLE的详细语法。 * 准备导出的表 * 定义外部表 * 导出数据 准备导出的表 ++++++++++++++ 假设我们有一个内部表expenses如下: .. code-block:: html :linenos: CREATE TABLE myexpenses(name text, date date, amount float4, category text, desc1 text); INSERT INTO myexpenses VALUES('john','2017-01-20',100.00,'travel','nothing'),('tom','2016-12-01',300,'taxi','nothing'); INSERT INTO myexpenses VALUES('marry','2017-01-21',1000.00,'travel','nothing'),('kurt','2016-12-02',800,'taxi','nothing'); .. code-block:: html :linenos: etl=# select * from myexpenses; name | date | amount | category | desc1 -------+------------+--------+----------+--------- john | 2017-01-20 | 100 | travel | nothing tom | 2016-12-01 | 300 | taxi | nothing marry | 2017-01-21 | 1000 | travel | nothing kurt | 2016-12-02 | 800 | taxi | nothing (4 rows) 定义外部表 +++++++++++ 可以使用下面的命令创建WRITABLE外部表,指定的location中如果路径名不存在,Oushu Database会自动为客户创建该目录。其中’nnhost’和’nnport’代表使用的Hadoop HDFS的namenode 主机地址和端口号: .. code-block:: html :linenos: CREATE EXTERNAL TABLE expense_out (LIKE myexpenses) LOCATION ('hdfs://nnhost:nnport/expense') FORMAT 'csv' ( DELIMITER '|' NULL ' '); 导出数据 +++++++++++ 下面这条语句可以很简单的导出数据到expense_out外部表。 .. code-block:: html :linenos: INSERT INTO expense_out select * from myexpenses; 现在你可以查看/expense目录下已经产生了相应文件。