如何将Linux命令df-htext4输出插入数据库表

如何将Linux命令df-htext4输出插入数据库表,linux,postgresql,postgresql-9.1,archlinux,Linux,Postgresql,Postgresql 9.1,Archlinux,有人能告诉我如何将Linux命令数据插入表中吗 例如: postgres@PTFPG01:/root$ df -ht ext4 Filesystem Size Used Avail Use% Mounted on /dev/sda1 98G 15G 79G 16% / /dev/sdb1 2.0T 921G 1008G 48% /data 我已尝试使用insert安装管道,但出现错误: root@PTFPG01:~# df -ht ext4

有人能告诉我如何将Linux命令数据插入表中吗

例如:

postgres@PTFPG01:/root$ df -ht ext4
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        98G   15G   79G  16% /
/dev/sdb1       2.0T  921G 1008G  48% /data
我已尝试使用insert安装管道,但出现错误:

root@PTFPG01:~# df -ht ext4 | psql -d DBA_Monitoring -p 6432 -U postgres -W Olxoo30 -c " insert into driver_size values()"
psql: warning: extra command-line argument "Olxoo30" ignored
Password:
ERROR:  syntax error at or near ")"
LINE 1:  insert into driver_size values() 

create table driver_size (
Filesystem varchar (50),  
Size varchar (10), 
Used varchar (10),
Avail varchar (10),
Use varchar (10),
Mounted_on  varchar (100)
); 

有人能告诉我如何将数据插入表中吗?

这对您有用吗

df -ht ext4 | tail -n+2 | sed -E "s/ +/\t/g"  | psql -d DBA_Monitoring -p 6432 -U postgres -W Olxoo30 -c 'copy driver_size from stdin;'

这对你有用吗

df -ht ext4 | tail -n+2 | sed -E "s/ +/\t/g"  | psql -d DBA_Monitoring -p 6432 -U postgres -W Olxoo30 -c 'copy driver_size from stdin;'

-W开关不将您的密码作为参数;它的作用是使程序绕过获取密码的其他机制,从键盘提示您输入密码。您应该通过其他机制(PGPASSWORD、.pgpass等)提供密码,而不是绕过它们

PostgreSQL没有支持一个或多个空格作为单个分隔符的复制模式,因此需要其他程序来处理输出。我选择了
sed
来做这件事。如果您的任何字段中有文字空白,则可能会出现问题

由于COPY的文本格式不支持HEADER选项,因此我改为使用
tail
删除HEADER行。把它们放在一起,然后:

df -ht ext4 | sed 's/\s\s*/\t/g' | tail +2 | psql -c 'copy driver_size from stdin'

-W开关不将您的密码作为参数;它的作用是使程序绕过获取密码的其他机制,从键盘提示您输入密码。您应该通过其他机制(PGPASSWORD、.pgpass等)提供密码,而不是绕过它们

PostgreSQL没有支持一个或多个空格作为单个分隔符的复制模式,因此需要其他程序来处理输出。我选择了
sed
来做这件事。如果您的任何字段中有文字空白,则可能会出现问题

由于COPY的文本格式不支持HEADER选项,因此我改为使用
tail
删除HEADER行。把它们放在一起,然后:

df -ht ext4 | sed 's/\s\s*/\t/g' | tail +2 | psql -c 'copy driver_size from stdin'

你真的在用9.1吗?那是很古老的你真的用9.1吗?那是相当古老的