【问题标题】:Build or Install pg_loader on Windows在 Windows 上构建或安装 pg_loader
【发布时间】:2022-05-11 15:43:05
【问题描述】:

我在由企业 IT 严格管理的 Windows 7 笔记本电脑上运行 PostgreSQL 9.6。我没有这台笔记本电脑的管理员权限,但可以通过 BeyondTrust 授予的提升权限做“很多”事情,包括软件安装。

我使用这个数据库从各种来源导入一些中等规模的数据集,并进行一些深入的分析和报告。这些数据集具有疯狂的编码和格式变化,这在导入它们时会带来挑战。对于一个数据集,我首先将其导入 MySQL,从数据中去除违规字符,将其导出回 CSV,最后将清理后的数据导入 PostgreSQL。

作为实验,我在运行 macOS 10.12 的家用 iMac 上安装了 PostgreSQL 9.6 和 pg_loader,它能够毫无问题地导入所有数据集。

以这一切为背景,我需要使用pg_loader 来导入各种数据集。但是,该网站不提供 Windows 安装程序或在 Windows 上编译它的说明。

谁能给我指明以下方向之一,列表从最可取到最不可取?

  1. pg_loader 的 Windows 安装程序
  2. 可与 pg_loader 相媲美的 Windows 安装程序
  3. 在 Windows 上编译 pg_loader 的详细说明
  4. 在导入前使用 Python 清理数据的建议(警告:我对 Python 的经验很少)

【问题讨论】:

  • 当谈到 Windows 的 pgloader 时,我觉得即使作者不是一个伟大的粉丝,并且在他的 git 页面上对它感兴趣。 github.com/dimitri/pgloader/issues/385 你不能调整你的 postgres 编码以允许你必须在 MySQL 中删除的“字符”吗?您是否尝试过仅使用 COPY 命令来加载数据? postgresql.org/docs/9.6/static/sql-copy.html 对于 python 方法,您可以读取文件并在导入之前使用 replace / strip 删除有问题的字符。

标签: windows postgresql pgloader


【解决方案1】:

您可以安装 Windows Subsystem for Linux,安装 Linux 发行版,然后使用 apt 或其他包管理器安装 pgloader -

$ sudo apt install pgloader
$ pgloader --version

pgloader version "3.4.1"
compiled with SBCL 1.3.3.debian

$ cd /mnt/c/Users/bburns/Desktop
$ pgloader ....

【讨论】:

  • 如果您是第一次使用 linux 子系统,请确保运行 sudo apt update
【解决方案2】:

这个解决方案对最初的提问者来说可能有点晚,但对于那些仍在寻找 Windows 解决方案的人来说。我可以确认我能够使用 Docker for Windows 让 pgloader 正常工作。

我的环境是安装在 Windows 10 PC 上的本地 MySQL。我为 Windows 安装了 Docker。然后我通过 docker 安装了 PostgreSQL: docker run --name some-postgres -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword -d postgres

最后,我通过 docker 运行 pgloader,使用以下命令将模式和数据从 mysql 拉到 postgres: docker run --rm --name pgloader dimitri/pgloader:latest pgloader mysql://root:root@host.docker.internal/my_db_name pgsql://postgres:mysecretpassword@host.docker.internal/postgres

这在我的 postgres 实例上创建了一个名为“my_db_name”的模式。 “root:root”和“postgres:mysecretpassword”是我的用户名:密码详细信息。这显然是一个生产就绪环境!另一个有用的位“host.docker.internal”是 docker 对父主机环境的引用。另外,我忽略了 SBCL 警告。

我仍在处理结果。大多数东西看起来都迁移成功了。我缺少触发器(不支持)和一些外键(错误?)。无论如何,我希望这可能对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2017-08-13
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多