1. rmt:
与 select_syntax 之间不能有空格
-- 可正确导出数据的语句:
rmt:SELECT * FROM cust INTO OUTFILE '/home/gbase/temp/cust.txt';
-- 会报语法错误的语句:
rmt: SELECT * FROM cust INTO OUTFILE '/home/gbase/temp/cust.txt';
2. file_path
, 以及 FIELD_OPTION
中的字段分隔符,字段包围符,转义标识符等均必须用单引号 '
包围,否则无法正常导出数据
-- 可正确导出数据的语句:
rmt:SELECT * FROM cust INTO OUTFILE '/home/gbase/temp/cust.txt';
-- 会报语法错误的语句:
rmt:SELECT * FROM cust INTO OUTFILE /home/gbase/temp/cust.txt;
3. 远程导出不支持顶层查询是 UNION 类查询
-- 会报语法错误的语句:
gbase> rmt:SELECT * FROM cust UNION SELECT * FROM product INTO OUTFILE '/home/gbase/temp/product.txt';
ERROR 1149 (42000): (GBA-02SC-1001) SELECT INTO OUTFILE with UNION is not supported.
4. 远程导出的目标文件如果已经在本地存在,则不能通过 select @@error_count
来获得错误数
远程导出的目标文件如果已经在本地存在,则不能通过 select @@error_count
来获得错误数,原因为文件是否存在由客户端判断,而 @@error_count
是服务端变量。
-- 示例中所用的表及数据:
create table t(id int);
insert into t values(1);
-- 导出 SQL 语句:
gbase> rmt:select * from t into outfile '/home/gbase/t.txt';
Query OK, 1 row affected
gbase> rmt:select * from t into outfile '/home/gbase/t.txt';
ERROR:
File '/home/gbase/t.txt' already exists
gbase> select @@error_count;
+---------------+
| @@error_count |
+---------------+
| 0 |
+---------------+
1 row in set