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:
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
'code' 카테고리의 다른 글
bat 파일의 입력 텍스트를 마스킹 할 수 있습니까? (0) | 2020.08.26 |
---|---|
자바 스크립트 개체의 요소 수 (0) | 2020.08.26 |
Swift Alamofire : HTTP 응답 상태 코드를 얻는 방법 (0) | 2020.08.26 |
긴 매개 변수 목록이있는 생성자를 사용하지 않고 크고 불변의 객체 만들기 (0) | 2020.08.25 |
Retina 디스플레이, 고해상도 배경 이미지 (0) | 2020.08.25 |