我发现以下命令非常有用,可以查看源数据库的外观:
sqoop-list-databases sqoop-list-tables
但是,似乎没有命令列出表中的列,这将是一个逻辑步骤。我现在的问题是:
0dxa2lsx1#
你可以利用 sqoop eval 用于此目的的命令。netezza中的示例:
sqoop eval
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 |
cetgtptt2#
在sqoop eval中使用“describe db\u name.table\u name”。sqoop eval--connect connection\u string--username用户名--password密码--query“describe db\u name.table\u name”
hivapdat3#
在sqoop eval query中使用以下命令:“describe database\u name.table\u name”这个命令对我有效:sqoop eval—连接jdbc:mysql用法://localhost/database\u name--username root-p--查询“description database\u name.table\u name”命令输出如下:[cloudera@localhost ~]$sqoop eval—连接jdbc:mysql用法://localhost/mytestdb--用户名root-p--查询“descripe mytestdb.customersnew3”17/01/26 22:13:08信息sqoop.sqoop:运行sqoop版本:1.4.3-cdh4.7.0输入密码:
|id | int(11)| no | |(null)| | name | varchar(20)| no | |(null)| | age | int(11)| no |(null)| | address | char 25 | yes | |(null)| |
5w9g7ksd4#
如果您只想知道某个源表的列名,下面是处理sqoop eval的最简单方法,下面是从oracle数据库中提取列名的示例,对于所有rdbms都是一样的sqoop eval libjars/var/lib/sqoop/ojdbc6.jar—连接jdbc:oracle:thin:@hostname:portnumber/servicename--username user-password password--query“selectfrom schemaname.tablename where rownum=10”这将在终端上打印模式。在query部分中,您可以运行任何要在rdbms上运行的查询。假设您想存储输出,只需将其附加到一个文件中,如下所示。sqoop eval-libjars/var/lib/sqoop/ojdbc6.jar—连接jdbc:oracle:thin:@hostname:portnumber/servicename--username user-password password--查询“selectfrom schemaname.tablename where rownum=10”>>sqoop\u results.txt
mo49yndu5#
不幸的是,没有像这样的命令 sqoop-list-columns 但是,有一些创造性的解决方法:
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语句,但这应该很容易找到。
5条答案
按热度按时间0dxa2lsx1#
你可以利用
sqoop eval
用于此目的的命令。netezza中的示例:
这将结果输出到控制台:
cetgtptt2#
在sqoop eval中使用“describe db\u name.table\u name”。
sqoop eval--connect connection\u string--username用户名--password密码--query“describe db\u name.table\u name”
hivapdat3#
在sqoop eval query中使用以下命令:“describe database\u name.table\u name”
这个命令对我有效:
sqoop eval—连接jdbc:mysql用法://localhost/database\u name--username root-p--查询“description database\u name.table\u name”
命令输出如下:
[cloudera@localhost ~]$sqoop eval—连接jdbc:mysql用法://localhost/mytestdb--用户名root-p--查询“descripe mytestdb.customersnew3”
17/01/26 22:13:08信息sqoop.sqoop:运行sqoop版本:1.4.3-cdh4.7.0输入密码:
17/01/26 22:13:12 info manager.mysqlmanager:准备使用mysql流结果集。
|列|名称|列|类型|可为空|列|键|列|默认|额外|
|id | int(11)| no | |(null)| | name | varchar(20)| no | |(null)| | age | int(11)| no |(null)| | address | char 25 | yes | |(null)| |
|薪资|小数(18,2)|是| |(空)||
5w9g7ksd4#
如果您只想知道某个源表的列名,下面是处理sqoop eval的最简单方法,下面是从oracle数据库中提取列名的示例,对于所有rdbms都是一样的
sqoop eval libjars/var/lib/sqoop/ojdbc6.jar—连接jdbc:oracle:thin:@hostname:portnumber/servicename--username user-password password--query“selectfrom schemaname.tablename where rownum=10”
这将在终端上打印模式。在query部分中,您可以运行任何要在rdbms上运行的查询。
假设您想存储输出,只需将其附加到一个文件中,如下所示。sqoop eval-libjars/var/lib/sqoop/ojdbc6.jar—连接jdbc:oracle:thin:@hostname:portnumber/servicename--username user-password password--查询“selectfrom schemaname.tablename where rownum=10”>>sqoop\u results.txt
mo49yndu5#
不幸的是,没有像这样的命令
sqoop-list-columns
但是,有一些创造性的解决方法:运行导入,并导入字段名。
下面是连接到sql server数据库时如何执行此操作的示例:
这将检索列名并将它们写入一个文件,然后您可以手动检查该文件。
当然,这可以扩展以获得其他元数据(例如字段类型)。请注意,如果要连接到不同的数据库类型,则需要稍微不同的select语句,但这应该很容易找到。