Как скопировать данные из таблицы BIGSQL в.txt
Это может быть очень глупый вопрос, но мне трудно найти способ скопировать данные в моем BIGSQL table
к .txt
в локальной файловой системе.
3 ответа
Решение
В зависимости от размера результирующего файла данных вы можете использовать команду экспорта, чтобы получить данные в один текстовый файл. Полученный файл окажется на одном узле.
Я использовал следующий скрипт в качестве примера:
\connect bigsql
drop table if exists stack.issue2;
create hadoop table if not exists stack.issue2 (
f1 integer,
f2 integer,
f3 varchar(200),
f4 integer
)
stored as parquetfile;
insert into stack.issue2 (f1,f2,f3,f4) values (0,0,'Detroit',0);
insert into stack.issue2 (f1,f2,f3,f4) values (1,1,'Mt. Pleasant',1);
insert into stack.issue2 (f1,f2,f3,f4) values (2,2,'Marysville',2);
insert into stack.issue2 (f1,f2,f3,f4) values (3,3,'St. Clair',3);
insert into stack.issue2 (f1,f2,f3,f4) values (4,4,'Port Huron',4);
select * from stack.issue2;
{ call sysproc.admin_cmd('export to /tmp/t1.unl of del select * from stack.issue2') };
\quit
Запуск скрипта:
jsqsh --autoconnect --input-file=./t1.sql --output-file=t1.out
Урожайность:
cat t1.out
+----+----+--------------+----+
| F1 | F2 | F3 | F4 |
+----+----+--------------+----+
| 0 | 0 | Detroit | 0 |
| 2 | 2 | Marysville | 2 |
| 3 | 3 | St. Clair | 3 |
| 1 | 1 | Mt. Pleasant | 1 |
| 4 | 4 | Port Huron | 4 |
+----+----+--------------+----+
+---------------+---------------+-------------+
| ROWS_EXPORTED | MSG_RETRIEVAL | MSG_REMOVAL |
+---------------+---------------+-------------+
| 5 | [NULL] | [NULL] |
+---------------+---------------+-------------+
и экспортированный файл:
ls -la /tmp/t1.unl
-rw-r--r-- 1 bigsql hadoop 93 Mar 3 16:05 /tmp/t1.unl
cat /tmp/t1.unl
0,0,"Detroit",0
3,3,"St. Clair",3
2,2,"Marysville",2
1,1,"Mt. Pleasant",1
4,4,"Port Huron",4
Другой способ извлечения с помощью SQL (как csv в этом примере) заключается в следующем:
create hadoop table csv_tableName
row format delimited fields terminated by ','
location '/tmp/csv_tableName'
as select * from tableName
Затем вы можете получить файл / ы из HDFS.
Прелесть bigsql в том, что вы можете подключиться, как если бы вы делали обычную базу данных db2 и вызывали экспорт.
[bigsql@myhost ~]$ db2 "create hadoop table test1 ( i int, i2 int , i3 int)"
DB20000I The SQL command completed successfully.
[bigsql@myhost ~]$ db2 "insert into test1 values (1,2,3), (4,5,6),(7,8,9),(0,1,2)"
DB20000I The SQL command completed successfully.
[bigsql@myhost ~]$ db2 "export to output.del of del select * from test1"
SQL3104N The Export utility is beginning to export data to file "output.del".
SQL3105N The Export utility has finished exporting "4" rows.
Number of rows exported: 4
[bigsql@myhost ~]$ cat output.del
1,2,3
4,5,6
7,8,9
0,1,2