我用绿梅创建了一个表,下面是脚本
- 表:staging.file_data
- DROP TABLE staging.file_data;
CREATE TABLE staging.file_data
(
file_name character varying(28),
line_number integer,
date_line text
)
WITH (
OIDS=FALSE
)
DISTRIBUTED BY (file_name);
ALTER TABLE staging.file_data
OWNER TO dev_staging_develop;
现在我需要用一些平面文件加载这个表.... 平面文件有更多列,但我被要求加载此表与平面文件为 1.第一列将具有该文件的名称 2.第二列是序号(行号) 3第三列将包含一串数据(除了平面文件第一行中的所有数据),每行都相同。
所以如果平面文件有100条记录,我们将在表格中有100行。
但我不知道如何将此平面文件导入此表,任何人都可以提供帮助 注意:平面文件是文本文件。并位于我的本地机器上。
感谢您的时间和提前帮助。
杰森
答案 0 :(得分:0)
读取文件需要将其加载到表中,但是因为您需要额外的字段而不是平面文件的一部分,所以需要在那里创建一个中间步骤。像这样:
--Create a temporary table to hold the contents of the file
create temp table temp_file (
each_line text
);
copy temp_file from '<path_to_file>/filename' text HEADER;
--if the file has a header! See also delimiter if needed and choose a char that does not exist in the file
--Now add the line numbers, and the filename
alter table temp_file add column line_no smallint;
alter table temp_file add column filename text;
create sequence temp_file_seq increment by 1 start with 1; --not sure start with 1 or 0, try
update temp_file
set line_no = nextval('temp_file_seq')
,filename = 'filename';
--Now populate your table
insert into staging.file_data
select * from temp_file;
--Cleanup
drop table temp_file;