如何从CSV中获取文件名并将其插入表的一列中

Hdk*_*Hdk 7 sql csv shell vertica

假设mt table名字是Table_1

表的结构类似于:

EMP_id, Emp_Name, File_Name_Input_Date (columns)
Run Code Online (Sandbox Code Playgroud)

Table_1从CSV文件加载.此CSV文件的名称是daily_01122014.csv

我使用垂直复制命令来加载此表:

ex copy Table_1 from '/location/daily_01122014.csv'delimiter ',';
Run Code Online (Sandbox Code Playgroud)

它将加载表,但列名将File_Name_Input_Date留空,我必须硬编码.

我想要的是编写一个shell脚本,它将动态读取文件名并将其加载到文件名中column File_Name,并从文件名中提取日期.

即:如果文件名是daily_01122014.csv,那么加载Table_1File_Name应该是daily_01122014.csv,Input_Date应该是2014-12-01.由于我有50-60个文件,我无法手动完成.

Up_*_*One 2

您可以做的就是在将数据加载到 Vertica 之前将此字符串添加到文件中, 请参阅此处的示例:

[dbadmin@DCXLG001 tmp]$ cat file001.csv
1,Adrian
[dbadmin@DCXLG001 tmp]$ ls -1 file*.csv|xargs -I% sed -i 's/$/,%/' %
[dbadmin@DCXLG001 tmp]$ cat file001.csv
1,Adrian,file001.csv
Run Code Online (Sandbox Code Playgroud)

- 我有一个名为 file*.csv 的文件,并将文件名添加到实际文件中每一行的末尾。您可以对任意一个以上的文件执行此操作。我将使用操作系统资源来执行此转换,然后尝试使用 Vetica 的复制命令创建填充程序