gpt4 book ai didi

将 csv 数据文件导入 DB2 的 Linux shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:50 24 4
gpt4 key购买 nike

我是 Linux 新手,想寻求您的帮助。任务是将 csv 数据导入 DB2。它在 shell 脚本中,并按计划运行。该文件有一个标题,这就是我使用 skipcount 1 的原因。分隔符是逗号,因为它是默认分隔符,所以我没有包含 COLDEL。

  1. 您能帮我排查为什么在运行脚本时出现以下错误吗?我正在使用 IMPORTINSERT_UPDATE,因为我了解到 LOAD 方法会在从 CSV 文件导入数据之前删除表的全部内容。不应删除表中的现有数据。仅当 CSV 文件发生更改时才会更新记录,否则应创建新记录。

  2. 我正在查看应使用哪种METHOD 从 CSV 文件中获取特定值,目前我正在使用 METHOD P。我不太确定其参数内的编号,它是否表示要访问多少列,并且应该与我从文件中导入的列相符?

下面是脚本片段:

db2 connect to MYDB user $USERID using $PASSWORD

LOGFILE=/load/log/MYDBLog.txt

if [ -f /load/data/CUST_GRP.csv ]; then
db2 "import from /load/data/CUST_GRP.csv of del skipcount 1 modified by usedefaults METHOD P(1,2,3,4,5)
messages $LOGFILE
insert_update into myuser.CUST(NUM_ID,NUM_GRP,NUM_TEAM,NUM_LG,NUM_STATUS)";
else echo "/load/data/CUST_GRP.csv file not found." >> $LOGFILE;
fi

if [ -f /load/data/CUST_GRP.csv ]; then
db2 "import from /load/data/CUST_GRP.csv of del skipcount 1 modified by dateformat=\"YYYY-MM-DD\" timeformat=\"HH:MM:SS\" usedefaults METHOD P(1,2,3,4,5,6,7)
messages $LOGFILE
insert_update into myuser.MY_CUST(NUM_CUST,DTE_START,TME_START,NUM_CUST_CLSFCN,DTE_END,TME_END,NUM_CUST_TYPE)";
else echo "/load/data/CUST_GRP.csv file not found." >> $LOGFILE;
fi

我遇到的错误是这样的:

SQL0104N  An unexpected token "modified" was found following "<identifier>".
Expected tokens may include: "INSERT". SQLSTATE=42601

谢谢!

最佳答案

您不能在 IMPORT 中以任意顺序放置子句命令。
skipcount 1 子句放在 messages 之前。

LOAD命令可以INSERT 数据的新部分或REPLACE 表内容在开头清空它。

关于将 csv 数据文件导入 DB2 的 Linux shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55112807/

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