10

Excelワークシート(.xls)があります。SQLスクリプトに変換する必要があります。1つのExcelワークシートは、複数のテーブルで構成されています。したがって、結果のスクリプトには、複数のcreatetableおよびinsertステートメントが含まれている必要があります。http://www.sqlconverter.com/などのさまざまなツールを試しましたが、適切な解決策を得ることができません。私がそれをすることができる他の方法はありますか?

4

3 に答える 3

11

インポートウィザードの使用は、必要以上にソリューションが複雑であるため、データを読み込もうとしている必要があるというコメントに気づきました。

あなたは試すことができますBULK INSERT

まず、各シートで[名前を付けて保存]を実行し、CSVファイルに変換します。インポートするシートごとに1つのCSVファイルが必要です。

次に、持ち込むデータ型と長さが類似しているテーブルを作成します。一般的なExcelセルはVARCHAR(255)です(具体的にしたい場合は、おそらくNVARCHAR(255)に似ていますが、このソリューションではUnicodeを避けてください)。

したがって、Excelシートに5つの列がある場合:

CREATE TABLE Sheet1
(Column1 VARCHAR(255)
, Column2 VARCHAR(255)
, Column3 VARCHAR(255)
, Column4 VARCHAR(255)
, Column5 VARCHAR(255)
)

次に、ネットワーク共有上にファイルがある場合、またはSQLインスタンスが存在するサーバー/マシンにローカルである場合に、テーブルに単純な一括挿入を書き込むことができます。たとえば、マシンにファイルがあり、ネットワーク上のサーバーにプッシュしようとした場合、SQLは、C:\以下のスクリプトのがマシンではなくサーバー上にあると見なします。フォルダを共有し、ネットワーク経由でアクセスする必要があります。\\MyMachineName\SharedFolder\Sheet1.csv

BULK INSERT dbo.Sheet1
FROM 'C:\LocalFolder\WhereTheFileIs\Sheet1.csv'
WITH (
FIELDTERMINATOR = ','
, ROWTERMINATOR = '\n'
)

これにより、ファイルとテーブルに同じ数の列が存在する場合に、そのテーブルにデータが取り込まれるはずです。

かわいくないですが、簡単です。これBULK INSERTは、基本的で迅速なロードの実証済みの真の方法です。

于 2012-10-25T13:38:12.897 に答える
0

Excellから挿入をグループ化する簡単な方法もあります。データが別の列の列B、C、およびDにある場合は、数式を作成します。= "insert into values('"&B1& "'、'"&C1& "' 、'"&D1&"')

于 2013-06-23T21:54:33.290 に答える
0

これはvamsikrishnamysoreによって作成されます。1.apacheapoiを使用する必要があります。このプロジェクトで使用するファイルとシステムapacheapoiに追加する必要があります。

  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
于 2016-12-07T06:44:15.380 に答える