如何使用sqoop import支持带空格的列名? [英] How to support column names with spaces using sqoop import?

查看:426
本文介绍了如何使用sqoop import支持带空格的列名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个MSSQL DB设置,其列名分别为"Column 0"和"Column 1":注意空格.

We have an MSSQL DB set-up with column names of "Column 0" and "Column 1": note the space.

如果我运行以下命令,则会出错:

If I run the following command, it errors:

sqoop导入--driver net.sourceforge.jtds.jdbc.Driver --connect jdbc:jtds:sqlserver://somemssqldb.com/OurDB --table dbo.OurTableName --username用户名--password ourPassword --columns 第0列" --target-dir s3://our-s3-bucket/9/data/1262/141893327230246 -m 1

sqoop import --driver net.sourceforge.jtds.jdbc.Driver --connect jdbc:jtds:sqlserver://somemssqldb.com/OurDB --table dbo.OurTableName --username username --password ourPassword --columns "Column 0" --target-dir s3://our-s3-bucket/9/data/1262/141893327230246 -m 1

堆栈跟踪报告:

错误:java.io.IOException:nextKeyValue中的SQLException 由以下原因引起:java.sql.SQLException:'0'附近的语法不正确.

Error: java.io.IOException: SQLException in nextKeyValue Caused by: java.sql.SQLException: Incorrect syntax near '0'.

如果我们同时删除了数据库和命令中的列名称空间,那么它将起作用.

If we remove the column name spaces in the DB as well as in the command, it works.

如何在--columns参数中使用空格支持它?如果通过专门使用--query并进行转义,那么我们成功完成此操作的唯一方法.

How can we get it to support using spaces in the --columns argument? The only way we are successfully able to do so if by using --query specifically and escape.

例如,我们必须编写如下查询:

For example we have to write a query like this:

SELECT t.[第1栏]

SELECT t.[Column 1]

推荐答案

如果列名带有空格,请使用--query选项

Use --query option if the column names are having white space

squeoop导入查询示例 sqoop导入--driver"com.microsoft.sqlserver.jdbc.SQLServerDriver" --connect "jdbc:sqlserver://aaaaa;databaseName=bbbb" --username "userName" --password "PassWord" --target-dir "/target directory" --query 'Select * from dbo.PANHPE_PROD_LN_ID_BU_GRP WHERE $CONDITIONS' --fields-terminated-by \034 -m 1

example sqoop import query sqoop import --driver "com.microsoft.sqlserver.jdbc.SQLServerDriver" --connect "jdbc:sqlserver://aaaaa;databaseName=bbbb" --username "userName" --password "PassWord" --target-dir "/target directory" --query 'Select * from dbo.PANHPE_PROD_LN_ID_BU_GRP WHERE $CONDITIONS' --fields-terminated-by \034 -m 1

在我的情况下,列名称:Manufacturing_Product_Global Business_Unit_Identifier

in my case column Name : Manufacturing_Product_Global Business_Unit_Identifier

这篇关于如何使用sqoop import支持带空格的列名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆