gpt4 book ai didi

java - 如何使用 sqoop import 支持带有空格的列名?

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:15 25 4
gpt4 key购买 nike

我们有一个 MSSQL DB 设置,其列名称为“Column 0”和“Column 1”:注意空格。

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

sqoop import --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

堆栈跟踪报告:

错误:java.io.IOException:nextKeyValue 中的 SQLException引起原因:java.sql.SQLException:“0”附近的语法不正确。

如果我们删除数据库和命令中的列 namespace ,它就会起作用。

我们怎样才能让它支持在 --columns 参数中使用空格?我们能够成功做到这一点的唯一方法是专门使用 --query 并转义。

例如,我们必须编写这样的查询:

选择 t.[第 1 列]

最佳答案

从名字“sqoop import”来看,这个工具似乎只是用于读取?

也许您可以尝试通过重命名表来混淆它,然后创建一个与表同名的 View 。在 View 中,您可以为列设置别名,不带空格。

EXEC SP_RENAME SourceTable, SourceTable_

CREATE VIEW SourceTable
AS

SELECT [Column 0] as Column0
FROM SourceTable_

您可以像这样编写查询...

SELECT t.Column0
FROM SourceTable t

这充其量是最后的解决方法,如果应用程序尝试更新 View ,它可能不起作用。

值得一试。

关于java - 如何使用 sqoop import 支持带有空格的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27572527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com