gpt4 book ai didi

使用 PostgreSQL COPY FROM 命令的 MySQL LOAD DATA INFILE

转载 作者:搜寻专家 更新时间:2023-10-30 20:04:54 26 4
gpt4 key购买 nike

我是 PostgreSQL 的新手。实际上,我以前使用过 MySQL,但由于某些项目特定原因,我需要使用 postgreSQL 并进行 POC。

现在的问题是:我正在使用 MySQL LOAD DATA INFILE 命令将列内容从文件加载到我的数据库表。

我的表结构是:表名:MSISDN表列名称:ID(主键 - auto_generated)、JOB_ID、MSISDN、REGION、STATUS

但我的输入文本文件 (rawBase.txt) 只有以下几列:MSISDN,区域

所以我使用下面的命令加载上面 2 列的初始 JOB_ID 和 STATUS。

LOAD DATA INFILE 'D:\\project\\rawBase.txt' INTO TABLE MSISDN 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(MSISDN,REGION)
SET JOB_ID = 'XYZ1374147779999', STATUS = 0;

如您所见,在 LOAD DATA INFILE 命令中有一个可用选项,我可以在其中为输入文本文件中不存在的列(JOB_ID 和 STATUS)设置特定的初始值。

现在,

对于 postgreSQL,我希望发生同样的事情。

还有一种相同的命令可用 COPY FROM如下所示:

COPY MSISDN FROM 'D:\\project\\rawBase.txt' WITH DELIMITER AS ','

但我无法为输入文本文件中不存在的其余列(JOB_ID 和 STATUS)设置特定的初始值。我没有得到任何这样做的富有成效的例子。

如果可能,请提出一些建议。

问候,桑迪

最佳答案

您可以使用管道以“Unix 方式”完成它:

cat rawbase.txt | awk '{print $0",XYZ1374147779999,0"}' | psql -d dbname -c "copy MSISDN FROM stdin with delimiter AS ','"

现在从问题中的文件路径来看,您似乎使用的是 MS-Windows,但是通过 MSYS 可以为 Windows 使用 Unix shell 和命令行工具,例如 awkCygwin .

关于使用 PostgreSQL COPY FROM 命令的 MySQL LOAD DATA INFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17803999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com