Open Menu dzosoft
Close Menu dzosoft

   TODO SOBRE INFORMÁTICA Y TECNOLOGÍA


                             




TRAIN INTENSELY LIKE NEVER BEFORE AND PUSH YOUR LIMITS!

Publish perfectly-optimized content in 1-click



 
 
 

INSERT INTO- Insertar consulta en SQL y BULK

 
 
INSERT INTO- Insertar consulta en SQL y BULK
 
En SQL, la inserción de datos se realiza mediante el comando sql INSERT INTO. De hecho, el comando insertar en le permite agregar un nuevo registro en la tabla de nuestra base de datos (ya sea que el motor utilizado sea MariaDB, Mysql, PostGreSQL, Transact-SQL, Oracle o cualquier otro DBMS).
En SQL, INSERT INTO es el comando más utilizado en SQL para manipular nuestros datos, así como los otros tres comandos fundamentales en SQL, a saber, SELECCIONAR, ACTUALIZAR y ELIMINAR.
Por lo tanto, INSERT INTO se utilizará para crear una o más entradas nuevas. También hablaremos del método BULK INSERT y del comando LOAD DATA INFILE, que permite la adición masiva de datos desde un archivo CSV o TXT de forma sencilla y rápida.

 - Sintaxis del Comando INSERT INTO
 - Comando SQL INSERT INTO con SELECT en SQL
 - INSERT INTO con múltiples entradas
 - INSERTAR IGNORAR EN agregar una entrada o no hacer nada si el registro ya existe
 - REPLACE INTO creación de un registro o actualización si ya existe
 - INSERTAR A GRANEL en SQL
 - INSERTAR ARCHIVO DE DATOS DE CARGA
 - Ejemplo de consulta INSERT INTO en PHP con MySQL
 - Ejemplo de consulta INSERT INTO en C# con MySQL
Ejemplo de consulta 10-INSERT INTO en C# con SQL

 

Sintaxis básica del comando SQL INSERT INTO

 

Para insertar un nuevo registro en la base de datos, se utiliza el comando INSERT INTO de la siguiente manera:
INSERT INTO table (column_1, column_2, column_3) VALUES ('value_1', 'value_2', 'value_3')


Especificamos el comando INSERT INTO seguido del nombre de cada una de las columnas, luego designamos cada valor que se le asignará encapsulado entre comillas (o apóstrofes). Esta sintaxis tiene la ventaja de no requerir que completemos cada una de las columnas. De hecho, podemos ejecutar perfectamente el siguiente comando SQL INSERT:
INSERT INTO table (column_1, column_2) VALUES('value_1', 'value_2')

Suponiendo que column_1 es una clave primaria autoincremental, esto nos evita escribir:
INSERT INTO table (column_1,column_2, column_3) VALUES (NULL,'value_2', 'value_3')

La base de datos asignará automáticamente el valor de nuestra primera columna.

También es posible realizar un comando SQL INSERT INTO sin especificar las columnas que queremos usar en este caso, el motor DBMS interpretará implícitamente el orden de las columnas de la tabla. También podemos incluir funciones nativas del motor SQL directamente en nuestra consulta. Aquí usaremos la función NOW() que devuelve la fecha y la hora al ejecutar la consulta SQL.


Para una tabla llamada comentarios con cuatro columnas:

usuario comentario_fecha comentario, la consulta INSERT específica para este formato será:
INSERT INTO comments VALUES ('guest', NOW(),'Good job')


Lo que sería equivalente a la consulta Sql INSERT INTO:

INSERTAR EN comentarios (usuario,comentario_fecha,comentario) VALORES ('invitado', AHORA(),'Buen trabajo')

 

Sintaxis avanzada con SELECT del comando INSERT INTO

 
El motor de la base de datos nos permite realizar un comando SQL INSERT INTO directamente desde una consulta SELECT.
Entonces es posible copiar el contenido de una fila específica de una tabla SQL a otra.
INSERT INTO table_1 SELECT column_1,column_2,column_3 FROM table_2 WHERE condition


INSERTAR EN también le permite realizar inserciones por subconsulta. Si bien este tipo de mando es denigrado por una cuestión de ejecución, pueden resultar útiles en ciertos casos singulares.
La sintaxis de estas consultas seguirá este patrón:
INSERT INTO table_1 (column_1,column_2, column_3) 
VALUES ((SELECT column_1 FROM table_2 WHERE condition LIMIT 1),'value_2', 'value_3')


Tenga en cuenta que es imperativo que la subconsulta:
(SELECT column_1 FROM table_2 WHERE conditions LIMIT 1)

Devuelve solo un resultado único de una sola columna. De lo contrario, el motor SQL devolverá un error y el registro no se incluirá en la tabla durante el comando INSERT INTO.

 

Syntaxe avancée de la commande SQL insert into avec multiples entrées

 
Es posible crear múltiples inserciones de entradas en nuestra base de datos, escribiendo solo una vez el encabezado del comando INSERT INTO y agregando varios lotes de VALORES, todos separados por una sola coma. Suponiendo nuevamente nuestra tabla de usuarios de tres columnas, la sintaxis de nuestra consulta SQL avanzada se convierte en:
INSERT INTO comments (user,comment_date) VALUES ('Marc',NOW()),
('John',NOW()),('Albert',NOW()),('Maria',NOW()),('Sandra',NOW()) ;

Esta consulta INSERT INTO producirá cinco registros en nuestra tabla de comentarios. Tenga en cuenta que es muy posible aprovechar el orden implícito de las columnas de la tabla y, por lo tanto, no especificarlas. Esto nos obligará a asignar un valor a cada columna, de lo contrario la consulta generará un error de DBMS.
Del mismo modo, también podemos aplicar lo que hemos visto con inserciones a través de subconsultas (aunque esto todavía es cuestionable desde la perspectiva del rendimiento).

 

Sintaxis avanzada del comando SQL INSERT INTO con CAST

 
Para garantizar el correcto funcionamiento de la inserción de sql en la consulta, a veces es necesario realizar conversiones de datos. En SQL, esta acción se realiza mediante el comando SQL CAST. Por tanto, es posible convertir una cadena de caracteres en una fecha, o en un número entero, o incluso un número entero en una cadena de caracteres.
Para realizar una conversión de tipeo de un formato a otro, simplemente use la función CAST, asígnele como parámetro los datos que queremos convertir, seguido de AS el formato esperado (DATETIME,DATE,VARCHAR, SIGNED INTEGER). Como el siguiente ejemplo demuestra el uso correcto de la inserción de SQL en la consulta con CAST.

INSER INTO comments (user,comment_date) VALUES ('Maria',CAST('2023-01-13 14:30:23' AS DATETIME))


 

Cómo copiar una tabla a otra con el comando SQL INSERT INTO?

 

INSERT INTO table_2 (column_1, column_2, column_3)
	SELECT column_1, column_2, column_3
	FROM table_1
	WHERE condition; 

 

Cómo agregar datos inexistentes pero no hacer nada si este registro ya está almacenado en la tabla con INSERT IGNORE INTO?

 
El comando INSERT IGNORE INTO se comporta como INSERT INTO excepto que no agrega el registro si ya existe un registro con la misma clave principal.
La sintaxis de este comando es muy cercana a un clásico INSERT INTO. Es imperativo que los registros de la tabla estén sujetos a una clave primaria o una restricción de unicidad.
INSERT IGNORE INTO table_1 (column_1_PK,column_2,column_3) VALUES(value_1_pk,value_2,value_3) 


 

Cómo actualizo o inserto un registro usando el comando Sql REPLACE INTO?

 
El comando SQL REPLACE INTO se usa para actualizar una entrada o para insertarla si no existe.
Este comando tiene varias sintaxis, pero la más simple (y sobre todo la más lógica dada su aplicación) sigue siendo la sintaxis que se acerca al comando UPDATE.

 

Sintaxis SQL avanzada con comando BULK INSERT EN T-SQL

 
REPLACE INTO table_1 
SET 
column_1_PK=value_1_pk,
column_2=value_2

Para cargar lotes de registros desde archivos csv o txt de gran tamaño de la forma más optimizada posible. Algunos motores de administración de bases de datos SQL (incluidos Transact-SQL, ORACLE, SQL) agregan su comando, BULK, a la lista. Una consulta BULK tiene como objetivo cargar conjuntos de filas directamente desde un conjunto de datos (también llamado conjunto de datos) sin la necesidad de crear cada consulta manualmente. La sintaxis de una consulta BULK es rápida y sencilla:
BULK INSERT my_table FROM 'c:\my_file.csv' ;


 

Sintaxis SQL avanzada con el comando LOAD DATA INFILE

 
Otros lenguajes como MySQL y MariaDB han respondido agregando el comando LOAD DATA INFILE, se comporta de la misma manera que la consulta BULK vista anteriormente.

LOAD DATA INFILE '/my_file.csv/' INTO TABLE my_table ;

Existen muchos parámetros, pero los dos más importantes son FIELDS TERMINATED BY que le permite definir que cada campo esté separado por un punto y coma.
LOAD DATA INFILE '/my_file.csv/' INTO TABLE my_table FIELDS TERMINATED BY ' ;' ;


Y el parámetro IGNORE X LINES que se usa para declarar que el archivo CSV tiene un encabezado y que el comando debe ignorarlo al procesar el lote de datos.

LOAD DATA INFILE '/my_file.csv/' INTO TABLE my_table FIELDS TERMINATED BY ' ;' IGNORE 1 LINES ;


 

INSERTAR EN MySQL con objeto PDO usando PHP

 
Para conectarnos a una base de datos MySQL en PHP utilizaremos el objeto PDO.
El objeto PDO es una clase de PHP que le permite crear una interfaz con la base de datos, aquí MySQL.
Este objeto simplifica el acceso a la base de datos y agrega una capa adicional de seguridad al manejar datos.
En el siguiente ejemplo, ejecutaremos el comando SQL INSERT INTO en nuestra tabla de usuarios (que aún contiene sus tres columnas usuario, registro, comentario).
Todo mientras usa el objeto PDO y las declaraciones preparadas para protegerse contra posibles inyecciones de SQL.
Asignamos al campo usuario el valor "juan" y al campo comentario el valor "Comentario sobre el uso", el registro del campo se llenará automáticamente con el valor que devolverá la función AHORA() esta función devolverá la fecha y la hora en que se ejecuta la consulta.
Para hacer esto, usamos las etiquetas denominadas :usuario, así como la etiqueta denominada :comentario en nuestra consulta SQL. Al preparar la solicitud a través del método prepare(), estos serán reemplazados por los valores de escape y seguros.


try{ $dic = array("user" => "Marc","comment"=>"My first comment"); $query = "INSERT INTO comments VALUES(:user,NOW(),:comment)";
$request= $dba->prepare($query); $request->execute($dic); } catch(PDOException $pdo_e){ //MYSQL Error } catch(Exception $e){ //Other errors } finally{ $dba = null; }


 

INSERT INTO in MYSQL using C#

 
Para realizar una consulta INSERT INTO MYSQL en C#, primero debe recuperar la DLL (MySql.Data) y agregarla como referencia a nuestro proyecto. Una vez hecho esto, tendremos que abrir la conexión a nuestra base de datos, ejecutar nuestro comando, esto se hace en unas pocas líneas de código:
using MySql.Data.MySqlClient;

namespace TestMysql{
class Program{ static void Main(string[] args) { String strConnection = @"SERVER=127.0.0.1;DATABASE=my_database;PORT=3306; UID=my_username;PASSWORD=my_password;" MySqlConnection Dba = new MySqlConnection(strConnection); Dba.Open();
MySqlCommand Cmd = new MySqlCommand("INSER INTO comments VALUES('Marc',NOW(),'Good job')", Dba,null); Cmd.CommandTimeout = 300; Cmd.ExecuteNonQuery(); Dba.Close(); } } }


Tenga en cuenta que ningún sistema le permite preparar y, por lo tanto, asegurar su solicitud como es el caso de PHP, por lo que deberá encargarse de ello antes de ejecutar la solicitud SQL.

 

INSERT INTO in SQL using C#

 
Para realizar una consulta INSERT INTO SQL en C#, el enfoque es muy similar al de MySQL. Definimos una cadena de conexión, luego abrimos la conexión con la base de datos SQL. Escribimos la consulta, la ejecutamos, cerramos la conexión a la base de datos.
using System.Data;
using System.Data.SqlClient;

namespace TestCsharp{
class Program{ static void Main(string[] args) { String strConnection = @"Data Source=127.0.0.1\WEBSQL; Initial Catalog=my_database;Persist Security Info=True; User ID=my_user;Password=my_password" SqlConnection Dba = new SqlConnection(strConnection); Dba.Open();
SqlCommandCmd = new SqlCommand("INSER INTO comments VALUES('Marc',NOW(),'Good job')", Dba,null); Cmd.CommandTimeout = 300; Cmd.ExecuteNonQuery(); Dba.Close(); } } }

Ahora sabe cómo utilizar consultas de inserción en SQL tanto en C# como en PHP. Ahora lo instamos a tener mucho cuidado al implementar para aplicaciones públicas, porque esta publicación no trata los aspectos de seguridad de INSERT en SQL.

También te puede interesar


Todo sobre informática y tecnología

Los 10 cursos online gratuitos para aprender SQL en 2023


Leave comment
          

Guardar apodo y correo electrónico en este navegador para la próxima vez.



Cargando...     

TRAIN INTENSELY LIKE NEVER BEFORE AND PUSH YOUR LIMITS!