我正在研究名为“好奇的月亮”的编码教程/书。任务之一是规范化并从Postgres表中放置的CSV文件中加载数据。数据库名称为“ enceladus”,表名称为“ master_plan”。有人告诉我使用make
来执行此操作。我不知道如何在PowerShell中运行Makefile。
我在运行Windows 10的Windows笔记本电脑上安装了make.exe
的GNUWin32。我使用PowerShell运行make.exe
。我通过运行notepad $profile
来完成此任务,并将New-Item alias:make -Value 'C:\Program Files (x86)\GnuWin32\bin\make.exe'
保存在文件中。我给它一个新的别名,因为我收到一条错误消息。现在,当我这样称呼别名时:
PS C:\Users\Sabrina> make
我收到此错误:
make:***未指定目标,也未找到任何makefile。停止。
我以崇高的态度编写了Makefile,并将其保存为makefile扩展名。它与make.exe
在同一文件夹'C:\ Program Files(x86)\ GnuWin32 \ bin'中,并命名为Makefile。我尝试将其运行为
PS C:\Users\Sabrina> make -f Makefile
然后我得到了错误
make:Makefile:没有这样的文件或目录
我不确定如何打开并运行Makefile。
这是我在Makefile中的代码:
DB=enceladus
BUILD=${CURDIR}/build.sql
SCRIPTS=${CURDIR}/scripts
CSV='${CURDIR}/data/master_plan.csv'
MASTER=$(SCRIPTS)/import.sql
NORMALIZE = $(SCRIPTS)/normalize.sql
all: normalize
psql $(DB) -f $(BUILD)
master:
@cat $(MASTER) >> $(BUILD)
import: master
@echo "COPY import.master_plan FROM $(CSV) WITH DELIMITER ',' HEADER CSV;" >> $(BUILD)
normalize: import
@cat $(NORMALIZE) >> $(BUILD)
clean:
@rm -rf $(BUILD)
答案 0 :(得分:0)
Makefile
在C:\Program Files (x86)\GnuWin32\bin
中,但是您当前的工作目录是C:\Users\Sabrina
。在运行make
或make -f Makefile
时,该命令在当前工作目录中而不是在可执行文件所在的目录中查找Makefile。
将Makefile放入当前工作目录中,问题将消失。
Move-Item 'C:\Program Files (x86)\GnuWin32\bin\Makefile' .
make