gpt4 book ai didi

linux - ^@ 字符在 Linux 上的 Windows Postgres 备份文件中造成严重破坏

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:28 24 4
gpt4 key购买 nike

我从在 Windows 上使用 pgAdmin3 的人那里得到了一些 Postgres 表转储。 (Blech。)首先,它在文件顶部有一大堆额外的废话,我不得不摆脱它们——比如没有注释的“toc.dat”等。

我已经通过手动编辑它们来使它们成为可以导入的可用格式,因为就目前而言它们有些乱码;在大多数情况下,我已经成功了,但是当我在 emacs 中打开它们时,例如,它们往往会散落着以下字符:

^@

有时只是很多:

@@@

enter image description here

我还没有想出如何使用 sed 或 awk 删除它们,主要是因为我不知道它们是什么(我不认为它们是空字符),甚至不知道如何在 emacs 中搜索它们。对于“不可打印”字符,它们显示为红色。 (上面的屏幕截图。)当我抓取文件或在我的 OS X 文本编辑器中打开它时,它们似乎也没有打印到终端,但是当我尝试将文件导入到 postgres 时,它们肯定会导致错误使用

psql mydatabase < table.backup

除非我把它们全部编辑掉。

有人知道有什么好方法可以摆脱这些除了手动编辑之外的问题吗?我试过就地 sed 也试过使用 tr,但没有效果——也许我在寻找错误的东西。 (我相信您已经知道,尝试在谷歌上搜索“^@”是徒劳的!)

只是想知道是否有人遇到过这个,因为除非我弄清楚,否则它会吃掉我......

谢谢!

最佳答案

那些 null characters .您可以使用以下方法删除它们:

tr -d '\000' < file1 > file2

-d 参数告诉 trremove characters with the octal value 000.
我在 this forum post 上找到了 tr 命令,因此他们获得了一些荣誉。

我可能会建议获得对 Windows 机器的访问权限(从没想过我会这么说),加载他们给你的原始转储,并以其他格式导出,看看你是否可以完全避免这个问题。对我来说,这似乎比在导入之前在数据库转储上运行任何 sedtr 更安全。祝你好运!

关于linux - ^@ 字符在 Linux 上的 Windows Postgres 备份文件中造成严重破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26550808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com