web-dev-qa-db-ja.com

ExcelワークシートからSQL挿入スクリプトを生成する

データベースに追加したい、大きなExcelワークシートがあります。

このExcelワークシートからSQL挿入スクリプトを生成できますか?

90
user2323240

上記の方法の1つを使用したインポートは、それが本当に大きなファイルである場合には理想的だと思いますが、Excelを使用して挿入ステートメントを作成することができます。

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

MS SQLでは、次のものを使用できます。

SET NOCOUNT ON

「影響を受ける1行」のコメントをすべて表示するのをやめる。そして、あなたがたくさんの行をやっていて、それがエラーになるなら、時々ステートメントの間にGOを入れてください。

179
Hart CO

下記のように、Management Studioのインターフェイスを介して適切なテーブルを作成し、そのテーブルにデータを挿入できます。データ量によっては時間がかかる場合がありますが、とても便利です。

enter image description here

enter image description here

27
Andrey Morozov

で多くの時間を節約する便利なツールがあります

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

あなただけのテーブル名、フィールド名、データタブを入力してGoを押すだけです。

26
mhn

次のExcelステートメントを使用できます。

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

これは、列名を考慮に入れ、列内の引用符によるコンパイルエラーをなくすため、Hart COの回答より優れています。最後の列は、引用符なしの数値列の例です。

7
Simon Baars

データベースによっては、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

4
jmhobbs

VBを使用して、データの周囲に適切なSQL文を行単位で追加して、ファイルに出力するようなものを書くことができます。私は以前にこれをしました。

2
Josh

オンラインでファイルを変換するツールがありますが、どのファイルを使用するのかに注意してください。変換されたファイルをWebに公開するツールもあります。

SQLizer.io はあなたのデータを保存したり、ウェブ上のどこにでも公開しないSQLツールです。

これは非常にうまく機能する別のツールです。

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

タブ区切りの値を取り、INSERTスクリプトを生成することができます。コピーして貼り付け、手順2の下のオプションで、[最初の行は列名]ボックスをオンにします

次に下にスクロールし、手順3で、 "Schema.Table or View Name:"ボックスにテーブル名を入力します

テーブルの削除と作成のチェックボックスにも注意を払い、生成されたスクリプトを実行する前に必ず確認してください。

これは私が見つけた最も速くそして最も信頼できる方法です。

1
Steven Mays

これはCSVファイルをSQL Insert Intoステートメントに変換するためのOnline automatorへのリンクです。

CSVからSQLへ

0
David Whittaker

以下のC#メソッドを使用すると、Excelシートを使用して挿入スクリプトを生成できます。メソッドを実行する前に、NuGet Package Managerから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();}
0
Bhargav Konda

PowerShellギャラリーの ImportExcelConvertFrom-ExcelToSQLInsertを使用します。

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
0
SteveC

信頼性の高い方法でSQL挿入を生成することができます。また、処理中に部分的なパラメータを変更することもできます。 IntellIJ DataGrip 、私が使っている強力なツール。 DGはWPSオフィスまたはMS Excelから列または行でデータを一括受信できます。コピー後、DGはデータをSQLインサートとしてエクスポートできます

0
何德福

このクエリは、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
0

私は頻繁にSQLスクリプトを作成し、それらをソース管理に追加してDBAに送信する必要がありました。私はWindowsストアからこのExcelIntoSQLアプリケーションを使用しました https://www.Microsoft.com/store/apps/9NH0W51XXQRM それは「CREATE TABLE」とINSERTSで完全なスクリプトを作成します。