sql - tablas - Insertando datos en la tabla de Hive
select en hive (11)
Al parecer, Hive admite INSERTAR ... VALORES a partir de la sección 0.14.
Consulte la sección ''Inserción en tablas desde SQL'' en: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML
Soy nuevo en la colmena. He configurado con éxito un clúster hadoop de un solo nodo para fines de desarrollo y, además, he instalado hive y pig.
Creé una mesa de relleno en la colmena:
create table foo (id int, name string);
Ahora, quiero insertar datos en esta tabla. ¿Puedo agregar datos como SQL un registro a la vez? Por favor ayúdame con un comando análogo a:
insert into foo (id, name) VALUES (12,"xyz);
Además, tengo un archivo csv que contiene datos en el formato:
1,name1
2,name2
..
..
..
1000,name1000
¿Cómo puedo cargar estos datos en la tabla ficticia?
Creo que la mejor manera es:
a) Copie los datos en HDFS (si no está ya allí)
b) Crea una tabla externa sobre tu CSV como esta
CREATE EXTERNAL TABLE TableName (id int, name string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '',''
LINES TERMINATED BY ''/n''
STORED AS TEXTFILE
LOCATION ''place in HDFS'';
c) Ya puedes comenzar a usar TableName enviándole consultas.
d) Si desea insertar datos en otra tabla de Hive:
insert overwrite table finalTable select * from table name;
El sistema de archivos Hadoop no admite la adición de datos a los archivos existentes. Sin embargo, puede cargar su archivo CSV en HDFS y decirle a Hive que lo trate como una tabla externa.
Es una limitación de la colmena .
1.Usted no puede actualizar los datos después de que se inserta
2.No hay ninguna declaración "insertar en valores de tabla ..."
3.Sólo puedes cargar datos usando carga masiva
4.No hay comando "borrar de"
5.Sólo puedes hacer una eliminación masiva
Pero aún desea insertar un registro desde la consola de Hive que puede seleccionar desde statck . refiera this
Esto es compatible desde la versión de la sección 0.14.
Insertar en la tabla pd_temp (dept, make, cost, id, asmb_city, asmb_ct, retail) VALUES (''producción'', ''tailandia'', 10,99202, ''northcarolina'', ''usa'', 20)
Los datos que haya insertado en un archivo de texto o registro que pueden colocarse en una ruta en hdfs y luego escribir una consulta de la siguiente manera en la sección
hive>load data inpath<<specify inputpath>> into table <<tablename>>;
EJEMPLO:
hive>create table foo (id int, name string)
row format delimited
fields terminated by ''/t'' or ''|''or '',''
stored as text file;
table created..
DATA INSERTION::
hive>load data inpath ''/home/hive/foodata.log'' into table foo;
No hay una manera directa de insertar 1 registro a la vez desde el terminal, sin embargo, aquí hay una solución simple y directa que generalmente uso cuando quiero probar algo:
Suponiendo que t
es una tabla con al menos 1 registro. No importa cuál es el tipo o número de columnas.
INSERT INTO TABLE foo
SELECT ''12'', ''xyz''
FROM t
LIMIT 1;
Puede usar las siguientes líneas de código para insertar valores en una tabla ya existente. Aquí la tabla es db_name.table_name que tiene dos columnas, y estoy insertando ''Todo'', ''hecho'' como una fila en la tabla.
insert into table db_name.table_name
select ''ALL'',''Done'';
Espero que esto haya sido útil.
Puedes intentar esto, he desarrollado una herramienta para generar scripts de Hive a partir de un archivo csv. A continuación se muestran algunos ejemplos sobre cómo se generan los archivos. Herramienta: https://sourceforge.net/projects/csvtohive/?source=directory
Seleccione un archivo CSV utilizando Examinar y configure el directorio raíz de hadoop, por ejemplo: / usuario / bigdataproject /
La herramienta genera el script de Hadoop con todos los archivos csv y a continuación se muestra un ejemplo del script de Hadoop generado para insertar csv en Hadoop
#!/bin/bash -v
hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv hive -f ./AllstarFull.hive
hadoop fs -put ./Appearances.csv /user/bigdataproject/Appearances.csv hive -f ./Appearances.hive
hadoop fs -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv hive -f ./AwardsManagers.hive
Muestra de scripts Hive generados.
CREATE DATABASE IF NOT EXISTS lahman;
USE lahman;
CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) row format delimited fields terminated by '','' stored as textfile;
LOAD DATA INPATH ''/user/bigdataproject/AllstarFull.csv'' OVERWRITE INTO TABLE AllstarFull;
SELECT * FROM AllstarFull;
Gracias vijay
Utilizar esta -
create table dummy_table_name as select * from source_table_name;
Esto creará la nueva tabla con los datos existentes disponibles en source_table_name
.
para insertar un valor ad-hoc como (12, "xyz), haga esto:
insert into table foo select * from (select 12,"xyz")a;