Tengo una hoja de trabajo de Excel grande que quiero agregar a mi base de datos.
¿Puedo generar un script de inserción SQL a partir de esta hoja de trabajo de Excel?
Tengo una hoja de trabajo de Excel grande que quiero agregar a mi base de datos.
¿Puedo generar un script de inserción SQL a partir de esta hoja de trabajo de Excel?
Respuestas:
Creo que importar usando uno de los métodos mencionados es ideal si realmente es un archivo grande, pero puede usar Excel para crear declaraciones de inserción:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
En MS SQL puede utilizar:
SET NOCOUNT ON
Dejar de mostrar todos los comentarios de "1 fila afectada". Y si está haciendo muchas filas y se produce un error, coloque un GO entre las declaraciones de vez en cuando
=CONCATENATE()
pero usar el &
letrero conduce a una legibilidad mucho mejor!
&
cuando me topé con el límite de parámetros hace CONCATENATE()
un tiempo, ese no es un problema común ahora que el límite es de 255 parámetros, pero nunca pienso en revertir.
Hay una herramienta útil que ahorra mucho tiempo en
http://tools.perceptus.ca/text-wiz.php?ops=7
Solo tiene que ingresar el nombre de la tabla, los nombres de los campos y los datos, separados por pestañas y presionar Ir.
Puede crear una tabla adecuada a través de la interfaz de Management Studio e insertar datos en la tabla como se muestra a continuación. Puede llevar algún tiempo dependiendo de la cantidad de datos, pero es muy útil.
Puede utilizar la siguiente declaración de Excel:
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
Esto es mejor que la respuesta de Hart CO, ya que tiene en cuenta los nombres de las columnas y elimina los errores de compilación debidos a las comillas en la columna. La última columna es un ejemplo de una columna de valor numérico, sin comillas.
Dependiendo de la base de datos, puede exportar a CSV y luego usar un método de importación.
MySQL: http://dev.mysql.com/doc/refman/5.1/en/load-data.html
PostgreSQL: http://www.postgresql.org/docs/8.2/static/sql-copy.html
Aquí hay otra herramienta que funciona muy bien ...
http://www.convertcsv.com/csv-to-sql.htm
Puede tomar valores separados por tabulaciones y generar un script INSERT. Simplemente copie y pegue y en las opciones del paso 2 marque la casilla "La primera fila son los nombres de las columnas"
Luego, desplácese hacia abajo y, en el paso 3, ingrese el nombre de su tabla en el cuadro "Esquema.Tabla o nombre de vista:"
Preste atención también a las casillas de verificación de eliminar y crear tabla, y asegúrese de examinar el script generado antes de ejecutarlo.
Esta es la forma más rápida y confiable que he encontrado.
Use el ConvertFrom-ExcelToSQLInsert
de ImportExcel en la Galería de PowerShell
NAME
ConvertFrom-ExcelToSQLInsert
SYNTAX
ConvertFrom-ExcelToSQLInsert [-TableName] <Object> [-Path] <Object>
[[-WorkSheetname] <Object>] [[-HeaderRow] <int>]
[[-Header] <string[]>] [-NoHeader] [-DataOnly] [<CommonParameters>]
PARAMETERS
-DataOnly
-Header <string[]>
-HeaderRow <int>
-NoHeader
-Path <Object>
-TableName <Object>
-WorkSheetname <Object>
<CommonParameters>
This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).
ALIASES
None
REMARKS
None
Aquí hay un enlace a un automatizador en línea para convertir archivos CSV a declaraciones SQL Insert Into:
Esta consulta la he generado para insertar los datos del archivo de Excel en la base de datos. En esta identificación y precio también se encuentran los valores numéricos y el campo de fecha. Esta consulta resumió todo el tipo que necesito.También puede ser útil para usted.
="insert into product (product_id,name,date,price) values("&A1&",'" &B1& "','" &C1& "'," &D1& ");"
Id Name Date price
7 Product 7 2017-01-05 15:28:37 200
8 Product 8 2017-01-05 15:28:37 40
9 Product 9 2017-01-05 15:32:31 500
10 Product 10 2017-01-05 15:32:31 30
11 Product 11 2017-01-05 15:32:31 99
12 Product 12 2017-01-05 15:32:31 25
Puede usar el método C # siguiente para generar los scripts de inserción usando la hoja de Excel, solo necesita importar el paquete OfficeOpenXml desde NuGet Package Manager antes de ejecutar el método.
public string GenerateSQLInsertScripts() {
var outputQuery = new StringBuilder();
var tableName = "Your Table Name";
if (file != null)
{
var filePath = @"D:\FileName.xsls";
using (OfficeOpenXml.ExcelPackage xlPackage = new OfficeOpenXml.ExcelPackage(new FileInfo(filePath)))
{
var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select the first sheet here
var totalRows = myWorksheet.Dimension.End.Row;
var totalColumns = myWorksheet.Dimension.End.Column;
var columns = new StringBuilder(); //this is your columns
var columnRows = myWorksheet.Cells[1, 1, 1, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
columns.Append("INSERT INTO["+ tableName +"] (");
foreach (var colrow in columnRows)
{
columns.Append("[");
columns.Append(colrow);
columns.Append("]");
columns.Append(",");
}
columns.Length--;
columns.Append(") VALUES (");
for (int rowNum = 2; rowNum <= totalRows; rowNum++) //selet starting row here
{
var dataRows = myWorksheet.Cells[rowNum, 1, rowNum, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
var finalQuery = new StringBuilder();
finalQuery.Append(columns);
foreach (var dataRow in dataRows)
{
finalQuery.Append("'");
finalQuery.Append(dataRow);
finalQuery.Append("'");
finalQuery.Append(",");
}
finalQuery.Length--;
finalQuery.Append(");");
outputQuery.Append(finalQuery);
}
}
}
return outputQuery.ToString();}
Tuve que hacer scripts SQL a menudo y agregarlos al control de código fuente y enviarlos a DBA. Usé esta aplicación ExcelIntoSQL de la tienda de Windows https://www.microsoft.com/store/apps/9NH0W51XXQRM Crea un script completo con "CREATE TABLE" e INSERTOS.
Tengo una forma confiable de generar inserciones SQL batly, y puedes modificar parámetros parciales en el procesamiento. Me ayuda mucho en mi trabajo, por ejemplo, copiar cientos de datos a una base de datos con estructura incompatible y conteo de campos. IntellIJ DataGrip , la poderosa herramienta que utilizo. DG puede recibir datos de la oficina de WPS o MS Excel por columna o línea. después de copiar, DG puede exportar datos como inserciones SQL .
insert
yupdate
aquí mismo ☺