使用sqoop从rdbms导入数据

plupiseo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(521)

我正在尝试将数据从sql server数据库导入配置单元。基本上,我将整个数据库(除了一些表)导入hive。在这里我有一些问题,我无法从任何地方得到答案。
我们可以将“-hive import”与import all tables和--exclude tables一起使用吗?如果没有,那么在将所有表加载到hfds之后,如何使用createexternaltable选项为所有表构建元数据?
我们可以在sqoop import命令的任何地方指定配置单元数据库名称吗?
谢谢。

iqxoj9l9

iqxoj9l91#

要将数据从rdbms导入到外部配置单元表,您需要遵循以下步骤
1) 创建外部配置单元表(必须创建所有表)。2) 使用sqoop导入数据(这可以使用shell脚本完成)
准备一个具有dbname.tablename列表的输入文件。shell脚本将此文件作为输入,逐行迭代,并为每行执行sqoop语句。

while read line;
do

    DBNAME=`echo $line | cut -d'.' -f1` 
    tableName=`echo $line | cut -d'.' -f2`

    sqoop import -Dmapreduce.job.queuename=$QUEUE_NAME --connect '$JDBC_URL;databaseName=$DBNAME;username=$USERNAME;password=$PASSWORD' --table $tableName  --target-dir $HIVE_EXTERNAL_TABLE_PATH/$tableName  --fields-terminated-by '\001'  -m 1 

done<inputFile
dwthyt8l

dwthyt8l2#

关于你的问题。
不需要。正如apache文档中提到的:“--exclude tables参数仅用于+sqoop import all tables”。请参阅以下来自apache的文档(搜索报价)。https://sqoop.apache.org/docs/1.4.4/sqoopuserguide.html#_syntax.
2.是的。下面是一个例子。

import-all-tables  --connect ${connectString} --username ${username} -- password ${password}  --hive-home /opt/hive  --hive-database ${database} -- verbose --hive-import --hive-drop-import-delims -m 1

相关问题