Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在Windows上通过Powershell将数据加载到Docker中的clickhouse时会出现换行错误?_R_Powershell_Docker_Clickhouse - Fatal编程技术网

为什么在Windows上通过Powershell将数据加载到Docker中的clickhouse时会出现换行错误?

为什么在Windows上通过Powershell将数据加载到Docker中的clickhouse时会出现换行错误?,r,powershell,docker,clickhouse,R,Powershell,Docker,Clickhouse,我正在尝试将数据加载到windows docker desktop中内置的docker容器中的clickhouse中。我在R中准备模拟数据,以csv形式编写,在clickhouse中创建表格,我正在创建连接: library(dplyr) library(data.table) library(clickhouse) setwd("C:/Users/xxxx/Documents/testing_load") my_df = data.table(datetime = as.character(c

我正在尝试将数据加载到windows docker desktop中内置的docker容器中的clickhouse中。我在R中准备模拟数据,以csv形式编写,在clickhouse中创建表格,我正在创建连接:

library(dplyr)
library(data.table)
library(clickhouse)
setwd("C:/Users/xxxx/Documents/testing_load")
my_df = data.table(datetime = as.character(c("2018-01-01 11:21:00", "2019-01-01 11:45:00")))
c(2018, 2019) %>%
  lapply(function(y) {
    print(y)
    fwrite(my_df[substr(datetime,1,4) == y],
              paste("test_",y,".csv"),
              row.names = F,
              col.names = F
           )
  })


dbSendQuery(con,
            paste(
              "CREATE TABLE test(
              datetime DateTime

              ) ENGINE = Log;"
            )
)
我试图加载的数据非常庞大,因此这只是一个示例,用于显示设置以及我在第一行中出错的原因。我想使用powershell中的clickhouse client加载数据,访问docker容器,如下所示:

#loop through files and load
$files = Get-ChildItem "C:\Users\xxxx\Documents\testing_load"

foreach ($f in $files){
    $outfile = $f.FullName | Write-Host
    Import-Csv –Delimiter "," $f.FullName | Write-Host
    Get-Date | Write-Host    
    "Start loading" + $f.FullName | Write-Host
    docker run -it --rm --link chanalytics:clickhouse-server yandex/clickhouse-client --host clickhouse-server clickhouse-client --query="INSERT INTO test FORMAT CSV"
     Get-Date | Write-Host 
    "End loading" + $f.FullName | Write-Host
}
我还添加了读取数据的功能,以防出现问题,但clickhouse在日期时间方面出现了错误。我试过在R中切换到positxc,但没有任何区别。我不知道,但我觉得这是一件非常简单的事情,我不理解。下面是我得到的错误:


打开excel我可以看到datetime的日期格式很好。对可能发生的事情有什么建议吗?

我能够解决这个问题:

#loop through files
$files = Get-ChildItem "C:\Users\xxxx\Documents\testing_load"

foreach ($f in $files){
    $outfile = $f.FullName | Write-Host
    Get-Date | Write-Host    
    "Start loading" + $f.FullName | Write-Host
    cat $f.FullName | docker run -i --rm --link chanalytics:clickhouse-client yandex/clickhouse-client -m --host chanalytics --query="INSERT INTO tpep FORMAT CSV"
     Get-Date | Write-Host 
    "End loading" + $f.FullName | Write-Host
}

我对ClickHouse一无所知,但请注意,Write Host用于写入显示器,而不是写入数据,尽管外部进程也会通过标准输出看到Write Host输出。docker启动的流程应该如何接收输入?您没有向它传输任何数据。错误似乎表明您的输入包含文字字符串,而不是LF字符。你验证了文本来自哪里了吗?嘿,李,我可以确认文件在那里,在这个例子中,我正在循环读取两个文件并加载到clickhouse。我在excel中打开了它们,可以看到datetime格式,正如您在R代码中看到的那样,我只是使用了一个名为datetime的列。@LoF10:您的PowerShell代码与您正在发出的docker命令没有关联,因为您没有向它提供标准输入,而在PowerShell中需要管道|,所以,让我再问一次:您如何期望您在PowerShell代码中所做的任何事情能够到达“插入测试格式CSV”命令?@LoF10:如果您参与了一个对话,而不是先忽略反馈,然后以侮辱的方式回应,您可能已经意识到,我一直在向您指出正确的方向——需要通过管道向docker命令提供stdin输入。我不明白你的docker命令的细节,但我知道有些东西不见了。您只需做一个简单的澄清——需要将文件内容通过管道传输到docker命令——就可以更快地解决这个问题。