database - 如何一次将 101 个 CSV 文件导入我的 PostgreSQL 数据库?
问题描述
我在我的 MacOS 终端上设置了 psql。它连接到我通过 Amazon RDS 运行的 PostgreSQL 数据库。
我有 100 个 CSV 文件(名称为 1、2、3、4,最多 100 个)。我想批量导入它们。我看到有一些脚本(https://dba.stackexchange.com/questions/168861/import-100-csv-files-into-postgresql/169089#169089),但我不知道如何运行脚本。
我尝试复制并粘贴此脚本 -
for x in $(ls <folder_name>*.csv);
do psql -c "copy table_name from '$x' csv" also; done
我收到了这些错误-
db=> for x in $(ls <folder_name>*.csv);
ERROR: syntax error at or near "for"
LINE 1: for x in $(ls <folder_name>...
^
db=> do psql -c "copy <table_name> from '$x' csv" also; done
ERROR: syntax error at or near "psql"
LINE 1: do psql -c "copy <table_name> from '$x' csv" also;
你能帮我a)找出正确的脚本来批量导入这些文件,b)找出如何执行脚本吗?
注意 - 所有文件都将转到同一个表,该表已经存在。
解决方案
考虑到这张表:
CREATE TABLE t (id INT,description TEXT);
以及以下文件
文件 1.csv
id,description
1,foo
文件2.csv
id,description
2,bar
执行以下 shell 脚本:
#!/bin/bash
path="/home/user/files/"
for f in $path*.csv;do
cat $f | psql testdb -c "COPY yourtable FROM STDIN DELIMITER ',' CSV HEADER"
done
你有你的数据:
$ psql testdb -c "SELECT * FROM t"
id | description
----+-------------
1 | foo
2 | bar
(2 Zeilen)
推荐阅读
- javascript - 如何使用猫鼬创建复杂的嵌套文档?
- python-3.x - 如何在不更改格式的情况下从稀疏数据框中删除行
- java - 栈实现java
- netsuite - 在仪表板中隐藏自定义搜索总行
- rust - 迭代获取子节点的可变引用
- go - 如何验证来自中间件 go-gin 的数据
- java - 如何在 GraphQL Java 中覆盖 DataFetcherExceptionHandler?
- javascript - jqGrid filterToolbar 仅适用于某些列
- python - Pandas 相当于过滤器,后跟 dplyr 中的 groupby 函数
- automated-tests - 需要在 Cypress 中多次访问注册链接