Mam arkusza Excel (.xls). Muszę przekonwertować go do skryptu sql. Arkusz roboczy Single Excel składa się z wielu tabel. Dlatego wynikowy skrypt powinien mieć wiele instrukcji tworzenia tabel i wstawiania. Próbowałem różnych narzędzi, takich jak http://www.sqlconverter.com/, ale nie jestem w stanie uzyskać odpowiedniego rozwiązania. W inny sposób mogę to zrobić?przekonwertować arkusz programu Excel do skryptu sql
Odpowiedz
zauważyłem komentarz, że za pomocą kreatora importu była bardziej skomplikowana roztworu niż chciałeś, więc trzeba próbować załadować danych.
Można spróbować BULK INSERT
:
Najpierw zrobić Zapisz jako na każdym arkuszu i konwertować je do plików CSV. Powinieneś mieć jeden plik CSV dla każdego arkusza, który chcesz zaimportować.
Następnie stwórz tabelę z podobnymi typami danych i długością, które będziesz wprowadzać. Typowa komórka Excela to VARCHAR (255), (prawdopodobnie bardziej jak NVARCHAR (255), jeśli chcesz być konkretna, ale unikniemy unicode dla tego rozwiązania).
Dlatego, jeśli arkusz excel miał 5 kolumn:
CREATE TABLE Sheet1
(Column1 VARCHAR(255)
, Column2 VARCHAR(255)
, Column3 VARCHAR(255)
, Column4 VARCHAR(255)
, Column5 VARCHAR(255)
)
Następnie można napisać prosty luzem insert do tabeli o ile masz plik w udziale sieciowym lub lokalnej na serwerze/komputerze, na którym SQL instancja jest. Na przykład, gdybyś miał plik na swoim komputerze i chciał wypróbować wypychanie do serwera w sieci, SQL pomyślałby, że C:\
w poniższym skrypcie był na serwerze, a nie na twoim komputerze. Trzeba by udostępnić folder i do niego dostęp za pośrednictwem sieci: \\MyMachineName\SharedFolder\Sheet1.csv
BULK INSERT dbo.Sheet1
FROM 'C:\LocalFolder\WhereTheFileIs\Sheet1.csv'
WITH (
FIELDTERMINATOR = ','
, ROWTERMINATOR = '\n'
)
ta powinna uzyskać dane w tej tabeli pod warunkiem, że taką samą liczbę kolumn istnieje w pliku i stołem.
To nie jest ładna, ale jest to proste. BULK INSERT
to wypróbowana i prawdziwa metoda podstawowego i szybkiego ładowania.
Jest również prosty sposób na wkładce grupowego z Excell: wystarczy, jeśli dane w kolumnie B, C i D w sepearate kolumnie tworzenia wzoru: = „dodaje się do wartości ("”& B1 &„«» "& C1 &" '' "& D1 &" ')
narzędzia online sqlizer.io robi to, w tym konwersji tabel z XLSX, CSV lub JSON do INSERT skryptów kompletnych z definicji tabeli.
SQLizer.io jest bezpłatny dla konwersji mniejszej niż 5000 wierszy dane –
Również http://www.convertcsv.com/csv-to-sql.htm –
to stworzony przez vamsi krishna mysore 1.apache Apoi należy stosować należy dodać do plików i systemu apache Apoi i sused w tym projekcie
package excelread;
import java.io.File;
import java.io.FileOutputStream;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.UnderlinePatterns;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
public class ExcelRead
{
public static void main(String[] args) throws Exception
{
try
{
FileOutputStream output=new FileOutputStream("result.docx");
FileOutputStream output=new FileOutputStream("result.sql");//sql script in the script
FileOutputStream output=new FileOutputStream("result.xlxs");
FileOutputStream output=new FileOutputStream("result.csv");
XWPFDocument doc=new XWPFDocument();
XWPFParagraph para=doc.createParagraph();
para.setAlignment(ParagraphAlignment.CENTER);
XWPFRun pararun=para.createRun();
pararun.setBold(true);
pararun.setFontSize(20);
pararun.setText("Database Tables\n\n");
File f= new File("C:\\Users\\admin\\Desktop\\BUILDING_TB.xls");//file location where it is stored in the system
Workbook wb= Workbook.getWorkbook(f);
int sheets=wb.getNumberOfSheets();
for(int s1=0;s1<sheets;s1++)
{
System.out.println("for sheet"+s1);
Sheet s= wb.getSheet(s1);
String tbname=s.getName();
XWPFParagraph para1=doc.createParagraph();
para1.setAlignment(ParagraphAlignment.LEFT);
pararun=para1.createRun();
pararun.setText(tbname);
pararun.setFontSize(16);
pararun.setUnderline(UnderlinePatterns.WORDS);
int rows=s.getRows();
int cols=s.getColumns();
int indexrows=0;
int cols1=0;
int indexcols=0;
int pk=1000,dt=1000,cn=1000,ci=1000,dd=1000,n=1000,com=1000;
int ava=0;
List <String> comments= new LinkedList <String>();
List <String> sequence= new LinkedList <String>();
List <String> cid= new LinkedList <String>();
String createQuery="create table " +tbname+"(";
System.out.println(rows+" "+cols);
for(int j=0;j<rows;j++) //TO AVOID EMPTY ROW AND COLUMNS
{
sequence.clear();
for(int i=0;i<cols;i++) //TO GET ONE ROW DETAILS
{
indexcols=0;
cols1=0;
Cell c=s.getCell(i,j);
sequence.add(c.getContents());
}
for(int i=0;i<cols;i++)
{
if(sequence.get(i)=="")
{
cols1= ++indexcols;
}
else
{
ava=1;
indexrows=j;
break;
}
}
if(ava==1)
break;
}
for(;indexcols<cols;indexcols++) //TO ARRANG DATA IN REQUIRED ORDER
{
if(sequence.get(indexcols).toLowerCase().contains("PK".toLowerCase()))
{
pk=indexcols;
}
else if(sequence.get(indexcols).toLowerCase().contains("Column_id".toLowerCase()))
{
ci=indexcols;
}
else if(sequence.get(indexcols).toLowerCase().contains("Column_Name".toLowerCase()))
{
cn=indexcols;
}
else if(sequence.get(indexcols).toLowerCase().contains("nullable".toLowerCase()))
{
n=indexcols;
}
else if(sequence.get(indexcols).toLowerCase().contains("Data_TYpe".toLowerCase()))
{
dt=indexcols;
}
else if(sequence.get(indexcols).toLowerCase().contains("Default".toLowerCase()))
{
dd=indexcols;
}
else if(sequence.get(indexcols).toLowerCase().contains("comments".toLowerCase()))
{
com=indexcols;
}
}
indexrows++;
int rows1=indexrows;
for(;indexrows<rows;indexrows++) //PREPARING QUERY(For excel rows which contain data)
{
indexcols=cols1;
for(;indexcols<cols;indexcols++) //for all columns
{
Cell c=s.getCell(indexcols, indexrows);
String item=c.getContents();
//adding Column name to query
if(indexcols==cn)
{ if(!(item.equals("")) && indexrows!=rows1)
createQuery =createQuery+" ,"+item;
else if(item.equals(""))
break;
else
createQuery =createQuery+" "+item;
}
//adding data type to query
if(indexcols==dt)
{
createQuery =createQuery+" "+item;
}
//adding data default to query
else if(indexcols==dd)
{
if(item=="")
continue;
else
createQuery =createQuery+" "+"default "+item;
}
//addig primary key constaint to query
else if(indexcols==pk)
{
if(item.equalsIgnoreCase("true"))
createQuery =createQuery+" "+"primary key";
else
createQuery =createQuery+" "+"";
}
//adding not null constraint to query
else if(indexcols==n)
{
if(item.equalsIgnoreCase("no"))
createQuery =createQuery+" "+"not null";
else
createQuery =createQuery+" "+"";
}
//adding comments
else if(indexcols==com)
{
if(item!="")
{
comments.add(item);
}
else
{
comments.add("comments empty");
}
}
else if(indexcols==ci)
{
if(item!=null)
{
cid.add(item);
}
}
}//column loop close
}//row looop close
createQuery=createQuery+")";
System.out.println(createQuery);
XWPFParagraph para2=doc.createParagraph();
para2.setAlignment(ParagraphAlignment.LEFT);
pararun=para2.createRun();
pararun.setFontSize(14);
pararun.setText(createQuery+";");
System.out.println("table created successfully");
}//sheets loop closse
doc.write(output); //writing data into ouptu file
output.close();
}//try block close
catch(Exception e)
{
System.out.println(e.toString());
}
}//main close
}//class close
- 1. Pobierz arkusz programu Excel do tabel tymczasowych za pomocą skryptu
- 2. Jak zaimportować arkusz Excel do programu SQL Server?
- 3. Załaduj arkusz danych programu Excel do bazy danych Oracle
- 4. przenoszenie danych z programu Excel do programu SQL Server tabeli
- 5. Excel do SQL, biblioteki C#
- 6. CSV do programu Excel konwersji
- 7. Jak skopiować arkusz między skoroszytami programu Excel w Javie
- 8. Jak skryptować arkusz kalkulacyjny Excel 2013 Porównaj?
- 9. Uruchamianie makra programu Excel z zewnątrz programu Excel za pomocą skryptu VBScript z wiersza polecenia
- 10. Utwórz tabelę SQL z programu Excel VBA
- 11. Tworzenie excel arkusz z szablonu w Javie, nowe wersje programu Excel
- 12. Ciągnięcie nazw kolumn do programu Excel z zapytania SQL
- 13. Używanie programu Excel VBA do uruchamiania kwerend SQL
- 14. Programowo (C#) przekonwertować Excel do obrazu
- 15. Jak przekonwertować plik .mdf programu SQL Server 2008 do programu SQL Server 2012?
- 16. Dodaj nowy arkusz do istniejącego skoroszytu programu Excel z kodem VB
- 17. xlwt napisać arkusz excel w locie
- 18. Łączące arkusze kalkulacyjne Excel w jeden arkusz
- 19. Jak zapisać/zastąpić istniejący plik programu Excel za pomocą programu Excel Interop - C#
- 20. eksport danych z programu Excel do bazy danych sqlite
- 21. Ukrywanie arkusza programu Excel z VBA
- 22. Arkusze programu Excel + C#
- 23. Uzyskaj nazwę arkusza programu Excel zawierającego kod
- 24. makro, aby zaimportować plik CSV do arkusza nieaktywnego programu Excel
- 25. Podpowiedzi arkusza Excel dla Pseudonimów logowania SQl
- 26. Eksportować do programu Excel z repeatera?
- 27. Hiperłącze programu Excel do konkretnej komórki
- 28. Makro Microsoft Excel do uruchomienia programu Java
- 29. pisanie do programu Excel w języku Java
- 30. Import plików CSV do programu Excel
AFAIK MS SQL Server zawiera kilka funkcji, aby załadować arkusze programu Excel do bazy danych: http: // support.microsoft.com/kb/321686 – muehlbau
widziałem ten link wcześniej, ale jest dość skomplikowany i nie jestem w stanie przejść przez to .. muszę proste rozwiązanie dla niego – user1402867