2014-11-12 7 views
1
내가 네티로 일부 데이터를로드하기 위해 노력하고있어

을에 CSV 파일에 줄 바꿈을 변경하지만 내 파일이보고 유닉스

내 질문은 각 행의 끝에 줄 바꿈이 있기 때문에 그것은 나를 못하게하는 방법 : 메모장에서 보면 linefeeds를 볼 수 있습니다. ++, 유닉스에서 어떻게해야합니까?

줄 바꿈을 변경하여 각 줄 넘김의 시작에 이스케이프 문자를 추가하여 Netezza에로드 할 수 있습니까?

답변

0

줄 바꿈은 nzload에 대한 줄 끝의 예상 문자입니다. 나는 당신이 문제를 겪고있을 것임에 틀림없는 캐리지 리턴이라고 생각합니다.

첫 번째 질문에 "vi -b"를 사용하여 파일이 DOS에서 왔음을 vi가 감지하지 못하게하고 마음이 상하는 캐리지 리턴을 숨기려고합니다. 파일 이름 옆의 vi 화면 하단에 "[dos]"가 표시되면 보지 않을 캐리지 리턴 문자가 있음을 알 수 있습니다.

vi에서 데이터 파일을 열어야하는 경우 "od -a filename"을 사용하여 캐리지 리턴이나 다른 제어 문자에 대한 데이터를 검사 할 수 있습니다.

당신은 당신과 같이 정규식로 탈출 할 수있는 라인의 끝에 여부, 데이터에 캐리지 리턴을 유지하려면 :

[[email protected] ~]$ cat data.txt 
ABC 
DEF 
[[email protected] ~]$ od -a data.txt 
0000000 A B C cr nl D E F cr nl 
0000012 
[[email protected] ~]$ perl -p -e 's/\r/\\\r/g' data.txt > data_escaped.txt 
[[email protected] ~]$ cat data_escaped.txt 
ABC\ 
DEF\ 
[[email protected] ~]$ od -a data_escaped.txt 
0000000 A B C \ cr nl D E F \ cr nl 
0000014 

는 그런 다음에 nzload 사용할 수 있습니다 - escapechar 옵션을 사용하여 데이터를로드하십시오. 그러나 -escapechar 옵션을 사용하면 데이터에 escapechar()을 사용할 가능성을 고려해야합니다. 좀 더 철저한 준비는 다음과 같습니다.

[[email protected] ~]$ cat data.txt 
A\BC\ 
DE\F 
[[email protected] ~]$ od -a data.txt 
0000000 A \ B C \ cr nl D E \ F cr nl 
0000015 
[[email protected] ~]$ perl -p -e 's/\\/\\\\/g' data.txt | perl -p -e 's/\r/\\\r/g' > data_escaped.txt 
[[email protected] ~]$ cat data_escaped.txt 
A\\BC\\\ 
DE\\F\ 
[[email protected] ~]$ od -a data_escaped.txt 
0000000 A \ \ B C \ \ \ cr nl D E \ \ F \ 
0000020 cr nl 
0000022 

그런 다음 nzload를 사용하여 결과를 확인할 수 있습니다.

[[email protected] ~]$ nzload -db testdb -t crtest -df data_escaped.txt -escapechar \\ -ctrlchars -crinstring 
Load session of table 'CRTEST' completed successfully 
[[email protected] ~]$ nzsql -d testdb -c "select * from crtest" 
    COL1 
-------- 
A\BC\ 
DE\F 
(2 rows) 

[[email protected] ~]$ nzsql -t -d testdb -c "select * from crtest" | od -a 
0000000 sp A \ B C \ cr nl sp D E \ F cr nl nl 
0000020 

또는 그들이 실제로 원하는 데이터의 일부가 아닌, 단순히 파일을 생성 한 프로세스의 원치 않는 유물, 그리고 할 경우 단지 DOS2UNIX와 캐리지 리턴을 근절 할 수 있습니다 그것으로.

[[email protected] ~]$ cat data.txt 
ABC 
DEF 
[[email protected] ~]$ od -a data.txt 
0000000 A B C cr nl D E F cr nl 
0000012 
[[email protected] ~]$ dos2unix data.txt 
dos2unix: converting file data.txt to UNIX format ... 
[[email protected] ~]$ od -a data.txt 
0000000 A B C nl D E F nl 
0000010 
+0

이 답변에 대한 질문이 있습니까? – ScottMcG