Спекуляции
Linux Mint 18.x
Posgres 10.x
Pgadmin3
Я пытался загрузить TSV в postgres, но получаю буквальную ошибку возврата каретки. В файле "\ N" используется для обозначения NULL.
Я пробовал как с \copy
, так и с помощью диалога импорта в pgadmin3. В pgadmin3 я попытался пропустить форматирование файла, а также попытался установить его в UTF8. Ошибка все еще сохраняется.
использованная начальная команда:
\copy table FROM PROGRAM 'tail -n +2 /home/super/Downloads/folder/myfile.tsv'
ERROR; literal carriage return found in data
HINT: use "\r" to represent carriage return.
Я использовал sed для создания разных версий файла, которые заменяют то, что, по моему мнению, может вызвать ошибку:
sed 's/\n/\r/g myfile.tsv > newfile1.tsv'
sed 's/\\n/\r/g myfile.tsv > newfile2.tsv'
sed 's/\\n//g myfile.tsv > newfile3.tsv'
Я также попробовал следующее (не в хронологическом порядке)
sed 's/\r\n/\r/g' new.tsv
sed 's/\\N/NULL/g' new.tsv
sed 's/\\//'
sed 's/\\N/\r/'
sed -n 's/\n/\r/'
sed -n 's/\\n/\r/'
sed 's/\N/\r/'
sed 's/\\N/NULL/'
sed 's/\N/NULL/'
sed 's/\r//'
sed 's/\N/NULL/'
sed 's/\\N/NULL/'
sed 's/\\//'
sed 's/\N/\r/g' new.tsv
sed 's/\N/NULL/g' new.tsv
sed 's/\N/NULL/g' new.tsv
И ни один из них не сработал. Когда я просматриваю диалоговое окно предварительного просмотра LibreOffice, кажется, что оно прокручивает содержимое и форматирует его в виде таблицы.
Я смотрел на этот вопрос о буквальной ошибке новой строки и этот вопрос об использовании копии .
Я не понял, что имелось в виду, что вставлен неправильный «байт».
Предварительный просмотр данных: https://imgur.com/JPhHB52
ОБНОВЛЕНИЕ: запустил sed 's/\r/CR was here/g' myfile.tsv | grep 'CR was here'
и вернуло два результата