我在Windows上使用pgAdmin3从某人那里获得了一些Postgres表转储。 (Blech。)首先,它在文件的顶部有一大堆额外的垃圾,我不得不摆脱 - 没有评论的“toc.dat”等等。
我已经手动编辑它们以使它们以可操作的格式导入,因为它看起来有点乱码;在大多数情况下,我已经成功了,但是当我在emacs中打开它们时,它们往往会散落着以下角色:
^ @
有时只是很多:
@@@
我还没弄明白如何使用sed或awk删除它们,主要是因为我不知道它们是什么(我认为它们不是空字符),甚至不知道如何在emacs中搜索它们。对于“不可打印”的角色,它们显示为红色。 (上面的截图。)当我捕获文件或在我的OS X文本编辑器中打开它时,它们似乎也没有打印到终端,但当我尝试使用postgres导入文件时它们肯定会导致错误
psql mydatabase < table.backup
除非我全部编辑。
有人想知道如何摆脱这些手工编辑的好方法吗?我已尝试使用sed并尝试使用tr,但没有效果 - 也许我正在寻找错误的东西。 (因为我确定你知道,试图谷歌'^ @'是徒劳的!)
只是想知道是否有人碰到过这个,因为除非我弄明白,否则它会对我吃掉......
谢谢!
答案 0 :(得分:1)
那些 null characters。您可以使用以下命令删除它们:
tr -d '\000' < file1 > file2
-d参数告诉tr
到remove characters with the octal value 000
我在this forum post上找到了tr
命令,所以有些功劳归于他们。
我可能会建议获取对Windows计算机的访问权限(从未想过我会这么说),加载他们给你的原始转储,并以其他一些格式导出,看看你是否可以完全避免这个问题。在导入之前,对我来说,在数据库转储上为sed
或tr
运行任何内容似乎更安全。祝你好运!