我发现以下命令非常有用,可以查看我的源数据库的样子:
sqoop-list-databases
sqoop-list-tables
但是,似乎没有命令列出表中的列,这将是一个合乎逻辑的步骤。
我现在的问题是:
答案 0 :(得分:4)
不幸的是,没有像sqoop-list-columns
这样的命令,但是有一些创造力有一个解决方法:
以下是一个示例,了解如何在连接到SQL Server数据库时执行此操作:
sqoop import --m 1 --connect 'jdbc:sqlserver://nameofmyserver; database=nameofmydatabase; username=dennisjaheruddin; password=mypassword' --query "SELECT column_name, DATA_TYPE FROM INFORMATION_SCHEMA.Columns WHERE table_name='mytableofinterest' AND \$CONDITIONS" --target-dir 'mytableofinterest_column_name'
这将检索列名并将其写入文件,然后您可以手动检查。
当然,这可以扩展为获取其他元数据(例如字段类型)。 请注意,如果要连接到不同的数据库类型,则需要稍微不同的SELECT语句,但这应该很容易找到。
答案 1 :(得分:1)
使用"描述DB_name.table_name"在sqoop eval。
sqoop eval --connect Connection_string --username username --password password --query" describe DB_Name.Table_Name"
答案 2 :(得分:1)
如果您只想知道某些源表的列名,则下面是最简单的处理方式 SQOOP EVAL 下面是从oracle数据库中提取列名的示例,对于所有RDBMS
都是相同的sqoop eval -libjars /var/lib/sqoop/ojdbc6.jar - connect jdbc:oracle:thin:@hostname: portnumber / servicename - 用户名用户 -password 密码 - 查询"从schemaname.tablename中选择*,其中rownum = 10&#34 ;
这将在终端上打印架构。在查询部分中,您可以运行要在rdbms上运行的任何查询。
假设您要存储输出,只需将其附加到文件中,如下所示。 sqoop eval -libjars /var/lib/sqoop/ojdbc6.jar - connect jdbc:oracle:thin:@hostname:portnumber / servicename - username < / strong>用户 -password 密码 - 查询&#34;从schemaname.tablename中选择*,其中rownum = 10&#34; &GT;&GT; sqoop_results.txt
答案 3 :(得分:0)
在sqoop eval查询中使用以下命令: “describe database_name.table_name”
这个命令对我有用:
sqoop eval --connect jdbc:mysql:// localhost / database_name --username root -P --query“describe database_name.table_name”
命令输出如下:
[cloudera @ localhost~] $ sqoop eval --connect jdbc:mysql:// localhost / mytestdb --username root -P --query“describe mytestdb.CustomersNew3”
17/01/26 22:13:08 INFO sqoop.Sqoop:运行Sqoop版本:1.4.3-cdh4.7.0 输入密码:
| ID | int(11)|没有| | (null)| | | NAME | varchar(20)|没有| | (null)| | |年龄| int(11)|没有| | (null)| | |地址| char(25)|是的| | (null)| |
答案 4 :(得分:0)
您可以为此目的使用sqoop eval
命令。
Netezza中的示例:
sqoop eval --connect 'jdbc:netezza://host:port/db' --username 'your_user' --password 'your_pass' --query "SELECT column_name, DATA_TYPE FROM INFORMATION_SCHEMA.Columns WHERE table_name='your_table'"
这会将结果输出到控制台:
-----------------------------------------------
| column_name | data_type |
-----------------------------------------------
| col1 | bigint |
| col2 | bigint |
| col3 | bigint |
| col4 | integer |