データベースに追加したい大きな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:」ボックスにテーブル名を入力します。
テーブルの削除と作成のチェックボックスにも注意を払い、生成されたスクリプトを実行する前に必ず確認してください。
これは、私が見つけた最も速くて最も信頼できる方法です。
使用ConvertFrom-ExcelToSQLInsert
からImportExcel PowerShellのギャラリーで
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
以下は、CSVファイルをSQL Insert Intoステートメントに変換するオンラインオートマトンへのリンクです。
このクエリは、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に送信する必要がありました。私は窓からこのExcelIntoSQLアプリケーションを使用し保存https://www.microsoft.com/store/apps/9NH0W51XXQRMの それは、「CREATE TABLE」と挿入して、完全なスクリプトを作成します。
SQL挿入を簡単に生成する信頼できる方法があり、処理中に部分的なパラメーターを変更できます。たとえば、互換性のない構造とフィールドカウントを使用してデータベースに100のデータをコピーするなど、作業の多くに役立ちます。 IntellIJ DataGrip、私が使用する強力なツール。DGは、列または行ごとにWPSオフィスまたはMS Excelからデータを簡単に受信できます。コピー後、DGはSQL挿入としてデータをエクスポートできます。
insert
&update
右ここに ☺