You can. Though if the file contains several lines, you need to watch for carriage returns & trailing nulls in your data:
declare
f utl_file.file_type;
begin
f := utl_file.fopen ('TMP', 'test.dat', 'w');
utl_file.put_line(f, 'ABC*2345*NewYork*NY*99999~CDE*1234*Pennsylvania*PA*99999~EFG*3456*Florida*FL*99999~FGH*4567*RhodeIsland*RI*99999~');
utl_file.put_line(f, 'IJK*2345*NewYork*NY*99999~');
utl_file.fclose(f);
end;
/
create table t (
c1 varchar2(100)
) organization external (
default directory tmp
access parameters (
records delimited by '~'
fields (
c1 char(100)
)
)
location ( 'test.dat' )
);
select rownum, c1 from t;
ROWNUM C1
1 ABC*2345*NewYork*NY*99999
2 CDE*1234*Pennsylvania*PA*99999
3 EFG*3456*Florida*FL*99999
4 FGH*4567*RhodeIsland*RI*99999
5
IJK*2345*NewYork*NY*99999
6 <null>