创建的表如下:
source:([id:`symbol$()] ric:();source:();Date:`datetime$())
property:([id:`symbol$()] Value:())
然后我有两个.csv
文件,其中包含两个表数据。
property.csv
显示如下:
id,Value
TEST1,1
TEST2,2
source.csv
显示如下:
id,ric,source,Date
1,TRST,QO,2017-07-07 11:42:30.603
2,TRST2,QOT,2018-07-07 11:42:30.603
现在,如何一次将csv
文件数据加载到每个表中
答案 0 :(得分:4)
您可以使用0:加载定界记录。 https://code.kx.com/wiki/Reference/ZeroColon
该函数最简单的形式是(types; delimiter) 0: filehandle
类型应以大写字母表示,每列一个,或忽略列的空格。例如,对于source.csv
使用“ SJ”将意味着我想在id列中将其读取为符号,并将value列中的读取为长整数。
定界符指定如何分隔各列,在这种情况下为逗号分隔值(CSV)。您可以将定界符作为字符串","
传入,它将把每一行都视为数据的一部分,并返回列的嵌套列表,您可以将其插入具有匹配模式的表中,也可以附加在标题和手动翻转字典,然后翻转以得到像这样的表:flip `id`value!("IS";",") 0: `:test.txt
。
如果将列标题作为csv中的第一行,则可以传递一个登记的分隔符enlist ","
,然后使用列标题并在kdb中返回一个表作为标题,然后可以重命名如果您认为合适的话。
由于您要读取的文件的列类型不同,因此您可以创建一个函数来读取示例
{x insert (y;enlist ",") 0:z}'[(`source;`property);("SSSP";"SJ");(`:source.csv;`:property.csv)]
这将允许您指定应创建的表的名称,文件的列类型和文件句柄。
我建议使用时间戳记,而不是(折旧的)日期时间,因为它存储为long而不是float,所以比较不会有问题。
答案 1 :(得分:1)
您可以使用$user = DB::selectOne('select roc_no,pic_email from vendors where id = :id', ['id' => $id]);
OR
$user = DB::table('vendors')->where('id',$id)->select('roc_no','pic_email')->first();
// $user->pic_email; email
// $user->roc_no; ROC NO
列出目录的内容;
key
最后,加载files: key `:.; /get the contents of the dir
files:files where files like "*.csv"; /filter the csv files
m:`property.csv`source.csv!("SJ";"JSSZ"); /create the mappings for each csv file
{[f] .[first ` vs f;();:; (m@f;enlist csv) 0: hsym f]}each files
each
文件;请注意,这里的目录是'pwd',在使用csv