SQL中有没有一种方法可以将目录中包含的ALL.csv导入到我的postgres表中?(窗口操作系统)



SQL中有没有办法将目录中包含的所有csv导入到我的postgres表?

谢谢你的帮助。

这根本不是PostgreSQL特有的。您需要使用循环为每个文件调用psql一次,为每个输入文件生成一个包含include命令的主文件,或者连接所有输入文件,然后运行它们。

所有这些任务都是用操作系统命令提示符工具完成的,与PostgreSQL无关。

连接文件并运行结果:

type *.sql | psql

要使用cmd.exe令人惊讶、难以置信的丑陋for循环语法来循环它们(未经测试,请参阅如何在批处理文件中循环匹配通配符的文件,并使用';for';循环迭代目录中的所有文件以了解详细信息):

FOR %%f IN (*.sql) DO (
echo %%~nf
psql -f %%~nf
)

我相信第三条路也是可能的。这可能会起作用(在unix盒子上的真实shell中也可以起作用),但尚未经过测试,因为我手头没有方便的Windows:

FOR %%f IN (*.sql) DO (
echo "include %%~nf"
) | psql

据我所知,这些都不能保证文件以任何特定的顺序运行。您需要在Windows外壳上查找文档。

就我个人而言,我建议用Powershell、Perl或其他比cmd.exe批处理语言更糟糕的脚本语言来做这类事情。

无论哪种方式,所有文件都必须具有系统默认的1字节文本编码,或者必须包含显式SET client_encoding= ...语句。

最新更新