code

Excel 워크 시트에서 SQL 삽입 스크립트 생성

codestyles 2020. 8. 26. 07:52
반응형

Excel 워크 시트에서 SQL 삽입 스크립트 생성


데이터베이스에 추가 할 큰 Excel 워크 시트가 있습니다.

이 Excel 워크 시트에서 SQL 삽입 스크립트를 생성 할 수 있습니까?


정말 큰 파일 인 경우 언급 된 방법 중 하나를 사용하여 가져 오는 것이 이상적이라고 생각하지만 Excel을 사용하여 삽입 문을 만들 수 있습니다.

="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"

MS SQL에서는 다음을 사용할 수 있습니다.

SET NOCOUNT ON

'영향을받은 행 1 개'주석을 모두 표시하지 않으려면 그리고 많은 행을 수행하고 오류가 발생하면 때때로 문 사이에 GO를 넣으십시오.


Management Studio 인터페이스를 통해 적절한 테이블을 생성하고 아래와 같이 테이블에 데이터를 삽입 할 수 있습니다. 데이터의 양에 따라 다소 시간이 걸릴 수 있지만 매우 편리합니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력


많은 시간을 절약 할 수있는 편리한 도구가 있습니다.

http://tools.perceptus.ca/text-wiz.php?ops=7

테이블 이름, 필드 이름 및 데이터를 입력하기 만하면됩니다-탭으로 구분하고 Go!


다음 Excel 문을 사용할 수 있습니다.

="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"

열 이름을 고려하고 열의 따옴표로 인한 컴파일 오류를 제거하므로 Hart CO의 대답보다 낫습니다. 마지막 열은 따옴표가없는 숫자 값 열의 예입니다.


데이터베이스에 따라 CSV로 내 보낸 다음 가져 오기 방법을 사용할 수 있습니다.

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


VB를 사용하여 데이터 주위에 적절한 SQL 문을 추가하여 파일 행에 출력 할 내용을 작성할 수 있습니다. 나는 전에 이것을했다.


다음은 매우 잘 작동하는 또 다른 도구입니다.

http://www.convertcsv.com/csv-to-sql.htm

It can take tab separated values and generate an INSERT script. Just copy and paste and in the options under step 2 check the box "First row is column names"

Then scroll down and under step 3, enter your table name in the box "Schema.Table or View Name:"

Pay attention to the delete and create table check boxes as well, and make sure you examine the generated script before running it.

This is the quickest and most reliable way I've found.


Here is a link to an Online automator to convert CSV files to SQL Insert Into statements:

CSV-to-SQL


This query i have generated for inserting the Excel file data into database In this id and price are numeric values and date field as well. This query summarized all the type which I require It may useful to you as well

="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

Use the ConvertFrom-ExcelToSQLInsert from the ImportExcel in the PowerShell Gallery

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

You can use the below C# Method to generate the insert scripts using Excel sheet just you need import OfficeOpenXml Package from NuGet Package Manager before executing the method.

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();}

I had to make SQL scripts often and add them to source control and send them to DBA. I used this ExcelIntoSQL App from windows store https://www.microsoft.com/store/apps/9NH0W51XXQRM It creates complete script with "CREATE TABLE" and INSERTS.


SQL 삽입을 생성하는 신뢰할 수있는 방법이 있으며 처리 과정에서 부분 매개 변수를 수정할 수 있습니다. 예를 들어, 수백 개의 데이터를 호환되지 않는 구조 및 필드 수를 가진 데이터베이스에 복사하는 등의 작업에 많은 도움이됩니다. 내가 사용하는 강력한 도구 인 IntellIJ DataGrip . DG는 WPS 사무실 또는 MS Excel에서 열 또는 줄로 데이터를 즉시 수신 할 수 있습니다. 복사 후 DG는 데이터를 SQL 삽입으로 내보낼 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/16818796/generate-sql-insert-script-from-excel-worksheet

반응형