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
Eu estava usando, =CONCATENATE()mas usar o &sinal leva a uma legibilidade muito melhor!
mastazi
1
@mastazi Concordo! Mudei para &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.
Hart CO
1
CONCATENAR () é o caminho a percorrer. Basta clicar no ícone fx na barra de fórmulas para ver o que você inseriu. É muito mais limpo do que apenas usar e assinar. É claro que usar o & sign é legal, mas às vezes quando você tem aspas duplas ou simples, isso fará com que você conte para sempre o que está faltando.
ian0411
1
Não funciona quando há aspas nas células. Verifique minha resposta para uma versão corrigida.
Simon Baars
2
@PreshanPradeepa Você pode usar a mesma sintaxe, o SQL Server não se importa se o inteiro está entre aspas, desde que seja um inteiro válido.
Hart CO
29
Existe uma ferramenta útil que economiza muito tempo no
Não publique seus dados confidenciais na web. Você não tem como saber o que acontece com os dados que envia ao aplicativo da web. Algumas dessas ferramentas armazenam seus dados e os disponibilizam publicamente
GabiM
28
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.
Prático. Vejo que com uma coluna IDENTITY, o buffer de cópia precisa ter a coluna, mesmo que os dados nele sejam ignorados, pois os valores são gerados automaticamente conforme as linhas são inseridas.
fortboise
Você pode tornar sua coluna IDENTIDADE a última na lista de colunas e então não seria necessário ter uma coluna extra.
Andrey Morozov
1
se você não especificar os valores de IDENTIDADE na planilha do Excel; você pode alterar e executar novamente o script sql edit top 200 rows removendo a coluna IDENTITY. Então, quando você copia e cola os valores sem IDENTITY; este método funcionará.
aozan88 de
Isso é quebrado para campos de datas e horas no Excel para qualquer outra pessoa que tenha o problema. Os dados datetime são convertidos em dados "binários" no lado SQL por algum motivo.
Kevin Vasko
1
@condiosluzverde Aconselho você a postar sua própria resposta. No caso de editar esta resposta, suas alterações provavelmente serão rejeitadas pelos moderadores da comunidade.
Andrey Morozov
16
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.
MS SQL, você pode usar o assistente de importação do SSMS para importar um arquivo do Excel.
Hart CO
1
Para adicionar detalhes ao @HartCO - para navegar até SSMS Import Wizard, clique com o botão direito do mouse no banco de dados, passe o mouse sobre as tarefas, clique em "Import Data ..." próximo à parte inferior do menu de contexto. Siga as etapas do assistente.
qxotk
2
Você poderia usar o VB para escrever algo que resultará em um arquivo linha por linha, adicionando as instruções sql apropriadas em torno de seus dados. Eu já fiz isso antes.
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.
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 72017-01-0515:28:372008 Product 82017-01-0515:28:37409 Product 92017-01-0515:32:3150010 Product 102017-01-0515:32:313011 Product 112017-01-0515:32:319912 Product 122017-01-0515:32:3125
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 ☺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:
No MS SQL você pode usar:
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
fonte
=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!
fonte
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.
fonte
Você pode usar a seguinte instrução do Excel:
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.
fonte
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
fonte
Você poderia usar o VB para escrever algo que resultará em um arquivo linha por linha, adicionando as instruções sql apropriadas em torno de seus dados. Eu já fiz isso antes.
fonte
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.
fonte
Use o
ConvertFrom-ExcelToSQLInsert
do ImportExcel na Galeria do PowerShellfonte
Aqui está um link para um automatizador online para converter arquivos CSV em instruções SQL Insert Into:
CSV para SQL
fonte
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
fonte
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.
fonte
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.
fonte
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 .
fonte