如何使用sqoop import支持带空格的列名? [英] How to support column names with spaces using 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屋!