Eu tenho uma grande planilha do Excel que quero adicionar ao meu banco de dados.
Posso gerar um script de inserção SQL a partir desta planilha do Excel?
Eu tenho uma grande planilha do Excel que quero adicionar ao meu banco de dados.
Posso gerar um script de inserção SQL a partir desta planilha do Excel?
Respostas:
Acho que a importação usando um dos métodos mencionados é ideal se for realmente um arquivo grande, mas você pode usar o Excel para criar instruções de inserção:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
No MS SQL você pode usar:
SET NOCOUNT ON
Deixar de mostrar todos os comentários '1 linha afetada'. E se você estiver fazendo muitas linhas e houver erros, coloque um GO entre as instruções de vez em quando
=CONCATENATE()
mas usar o &
sinal leva a uma legibilidade muito melhor!
&
quando esbarrei no limite do parâmetro há CONCATENATE()
um tempo, isso não é um problema comum agora que o limite é de 255 parâmetros, mas nunca penso em reverter.
Existe uma ferramenta útil que economiza muito tempo no
http://tools.perceptus.ca/text-wiz.php?ops=7
Você só precisa inserir o nome da tabela, os nomes dos campos e os dados separados por tabulação e clicar em Go!
Você pode criar uma tabela apropriada através da interface do Management Studio e inserir dados na tabela como mostrado abaixo. Pode levar algum tempo dependendo da quantidade de dados, mas é muito útil.
Você pode usar a seguinte instrução do Excel:
="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
Isso é melhor do que a resposta de Hart CO, pois leva em consideração os nomes das colunas e elimina os erros de compilação devido às aspas na coluna. A coluna final é um exemplo de coluna de valor numérico, sem aspas.
Dependendo do banco de dados, você pode exportar para CSV e usar um método de importação.
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
Aqui está outra ferramenta que funciona muito bem ...
http://www.convertcsv.com/csv-to-sql.htm
Ele pode usar valores separados por tabulação e gerar um script INSERT. Basta copiar e colar e nas opções da etapa 2 marcar a caixa "A primeira linha são os nomes das colunas"
Em seguida, role para baixo e, na etapa 3, insira o nome da tabela na caixa "Schema.Table or View Name:"
Preste atenção às caixas de seleção excluir e criar tabela também e certifique-se de examinar o script gerado antes de executá-lo.
Esta é a maneira mais rápida e confiável que encontrei.
Use o ConvertFrom-ExcelToSQLInsert
do ImportExcel na Galeria do 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
Aqui está um link para um automatizador online para converter arquivos CSV em instruções SQL Insert Into:
Esta consulta que gerei para inserir os dados do arquivo Excel no banco de dados. Neste id e preço estão os valores numéricos e o campo de data também. Esta consulta resumiu todos os tipos de que necessito. Pode ser útil para você também
="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
Você pode usar o método C # abaixo para gerar os scripts de inserção usando a planilha do Excel, apenas você precisa importar o pacote OfficeOpenXml do Gerenciador de pacotes NuGet antes de executar o 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();}
Eu tive que fazer scripts SQL com freqüência e adicioná-los ao controle de origem e enviá-los ao DBA. Eu usei este aplicativo ExcelIntoSQL da Windows Store https://www.microsoft.com/store/apps/9NH0W51XXQRM Ele cria um script completo com "CREATE TABLE" e INSERTS.
Tenho uma maneira confiável de gerar inserções SQL de maneira confiável, e você pode modificar parâmetros parciais no processamento. Ajuda muito no meu trabalho, por exemplo, copiar dados de uma centena para banco de dados com estrutura e contagem de campos incompatíveis. IntellIJ DataGrip , a ferramenta poderosa que utilizo. DG pode facilmente receber dados do escritório WPS ou MS Excel por coluna ou linha. após a cópia, o DG pode exportar dados como inserções SQL .
insert
eupdate
aqui mesmo ☺