데이터베이스에 추가 할 큰 Excel 워크 시트가 있습니다.
이 Excel 워크 시트에서 SQL 삽입 스크립트를 생성 할 수 있습니까?
데이터베이스에 추가 할 큰 Excel 워크 시트가 있습니다.
이 Excel 워크 시트에서 SQL 삽입 스크립트를 생성 할 수 있습니까?
답변:
정말 큰 파일 인 경우 언급 된 방법 중 하나를 사용하여 가져 오는 것이 이상적이라고 생각하지만 Excel을 사용하여 삽입 문을 만들 수 있습니다.
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
MS SQL에서는 다음을 사용할 수 있습니다.
SET NOCOUNT ON
'영향을받은 행 1 개'주석을 모두 표시하지 않으려면 그리고 많은 행을 수행하고 오류가 발생하면 때때로 문 사이에 GO를 넣으십시오.
=CONCATENATE()
있었지만 &
기호를 사용하면 훨씬 더 가독성이 좋습니다!
&
매개 변수 제한에 부딪혔을 때 전환했습니다. CONCATENATE()
이제 제한이 255 개 매개 변수이므로 일반적인 문제는 아니지만 되돌릴 생각은 없습니다.
많은 시간을 절약 할 수있는 편리한 도구가 있습니다.
http://tools.perceptus.ca/text-wiz.php?ops=7
테이블 이름, 필드 이름 및 데이터를 입력하기 만하면됩니다-탭으로 구분하고 Go!
Management Studio 인터페이스를 통해 적절한 테이블을 생성하고 아래와 같이 테이블에 데이터를 삽입 할 수 있습니다. 데이터의 양에 따라 다소 시간이 걸릴 수 있지만 매우 편리합니다.
다음 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
다음은 매우 잘 작동하는 또 다른 도구입니다.
http://www.convertcsv.com/csv-to-sql.htm
탭으로 구분 된 값을 취하고 INSERT 스크립트를 생성 할 수 있습니다. 복사하여 붙여넣고 2 단계 의 옵션 에서 "첫 번째 행은 열 이름입니다."확인란을 선택합니다.
그런 다음 아래로 스크롤하여 3 단계에서 "Schema.Table or View Name :"상자에 테이블 이름을 입력합니다.
테이블 삭제 및 생성 확인란에도주의를 기울이고 생성 된 스크립트를 실행하기 전에 확인하십시오.
이것은 내가 찾은 가장 빠르고 신뢰할 수있는 방법입니다.
PowerShell 갤러리 ConvertFrom-ExcelToSQLInsert
의 ImportExcel 에서 사용
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
이 쿼리는 Excel 파일 데이터를 데이터베이스에 삽입하기 위해 생성했습니다.이 ID와 가격은 숫자 값과 날짜 필드입니다. 이 쿼리는 내가 필요한 모든 유형을 요약했습니다.
="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
아래 C # 메서드를 사용하여 Excel 시트를 사용하여 삽입 스크립트를 생성 할 수 있습니다. 메서드를 실행하기 전에 NuGet 패키지 관리자에서 OfficeOpenXml 패키지를 가져 오면됩니다.
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();}
SQL 스크립트를 자주 만들어 소스 제어에 추가하여 DBA에 보내야했습니다. Windows 스토어 https://www.microsoft.com/store/apps/9NH0W51XXQRM 에서이 ExcelIntoSQL 앱을 사용했습니다. "CREATE TABLE"및 INSERTS로 완전한 스크립트를 생성합니다.
SQL 삽입을 생성하는 신뢰할 수있는 방법이 있으며 처리 과정에서 부분 매개 변수를 수정할 수 있습니다. 예를 들어, 수백 개의 데이터를 호환되지 않는 구조 및 필드 수를 가진 데이터베이스에 복사하는 등의 작업에 많은 도움이됩니다. 내가 사용하는 강력한 도구 인 IntellIJ DataGrip . DG는 WPS 사무실 또는 MS Excel에서 열 또는 줄로 데이터를 즉시 수신 할 수 있습니다. 복사 후 DG는 데이터를 SQL 삽입으로 내보낼 수 있습니다 .
insert
및update
바로 여기를 ☺