在Windows

时间:2016-08-03 18:14:21

标签: windows postgresql pgloader

我在由企业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的经验很少)

2 个答案:

答案 0 :(得分:1)

此解决方案可能比原始问询者晚了一点,但对于仍在寻找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的架构和数据从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”是我的用户名:password的详细信息。显然,这是生产就绪的环境!另一个有用的位“ host.docker.internal”是Docker对父主机环境的引用。另外,我也忽略了SBCL警告。

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

答案 1 :(得分:0)

您可以安装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 ....