Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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/7/sqlite/3.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
Sql server 用于Elasticsearch的JDBC馈线_Sql Server_Bash_Jdbc_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Bulkinsert - Fatal编程技术网 elasticsearch,bulkinsert,Sql Server,Bash,Jdbc,elasticsearch,Bulkinsert" /> elasticsearch,bulkinsert,Sql Server,Bash,Jdbc,elasticsearch,Bulkinsert" />

Sql server 用于Elasticsearch的JDBC馈线

Sql server 用于Elasticsearch的JDBC馈线,sql-server,bash,jdbc,elasticsearch,bulkinsert,Sql Server,Bash,Jdbc,elasticsearch,Bulkinsert,我正在尝试创建一个JBDC馈线,将数据从SQL Server加载到elasticsearch中。我在这里使用指南:搜索标题“如何运行独立JDBC馈线” 我已成功下载并安装elasticsearch,并已将其安装并运行。我已经下载了用于SQL server的JDBC驱动程序,并将其移动到了./plugins/JDBC文件夹中 我将负责创建bash脚本。在今天之前,我甚至从来没有看过bash脚本,我很难让它工作,因为我还不知道一半的语法 elasticsearch目录为c:\elasticsearc

我正在尝试创建一个JBDC馈线,将数据从SQL Server加载到elasticsearch中。我在这里使用指南:搜索标题“如何运行独立JDBC馈线”

我已成功下载并安装elasticsearch,并已将其安装并运行。我已经下载了用于SQL server的JDBC驱动程序,并将其移动到了./plugins/JDBC文件夹中

我将负责创建bash脚本。在今天之前,我甚至从来没有看过bash脚本,我很难让它工作,因为我还不知道一半的语法

elasticsearch目录为c:\elasticsearch-1.4.0

下面是我的bash脚本:

#!/bin/sh

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

# ES_HOME required to detect elasticsearch jars
export ES_HOME= C:\elasticsearch-1.4.0

echo '
{
    "elasticsearch" : {
         "cluster" : "elasticsearch",
         "host" : "localhost",
         "port" : 9200
    },
    "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:sqlserver://localhost;databaseName=MyDatabase",
        "user" : "MyUser",
        "password" : "MyPassword",
        "sql" :  "select * From MyTable",
        "treat_binary_as_string" : true,
        "index" : "MyFirstESIndex"
      }
}
' | java \
    -cp "${DIR}/*" \
    org.xbib.elasticsearch.plugin.jdbc.feeder.Runner \
    org.xbib.elasticsearch.plugin.jdbc.feeder.JDBCFeeder
我需要在此脚本中更新什么?这是脚本的这一行中的内容:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
我这样做的原因是因为我正在寻找最好的方法,从sql server一次性将数千万条记录插入elasticsearch,即批量插入

我们的第一次迭代涉及获取表中的每一行数据,将其转换为JSON文档,并插入到ES中。这花费了大约10个小时的时间来获取所有数据

提前感谢您的建议。

而不是:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
如果您在该工作目录中很重要,请执行以下操作:

DIR="$( dirname "${BASH_SOURCE[0]}" )"
cd $DIR
此外,如果不是打字错误,请删除ES_HOME=后面的空格,如有疑问,请使用引号:

export ES_HOME="C:\elasticsearch-1.4.0"
此外,对于Java-cp参数,如果您想包含我假设的所有jar文件,请不要使用引号,这样globbing就可以工作了:

# Since you are already in the directory, you don't need DIR
JARS=$(echo ./*jar)
...
# On the cp line, substitute spaces with : to build the classpath
-cp "${JARS// /:}" \

我希望这有帮助。如果你能提供更多关于脚本失败的细节,我可以提供更多帮助。您是否收到了特定的错误消息?

您是否能够使其正常工作?