133

我有一个大的 Excel 工作表,我想将它添加到我的数据库中。

我可以从此 Excel 工作表生成 SQL 插入脚本吗?

4

14 回答 14

237

如果文件确实是一个大文件,我认为使用上述方法之一进行导入是理想的,但您可以使用 Excel 创建插入语句:

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

在 MS SQL 中,您可以使用:

SET NOCOUNT ON

放弃显示所有“受影响的 1 行”评论。如果你做了很多行并且出错了,每隔一段时间在语句之间放一个 GO

于 2013-05-29T16:45:34.847 回答
32

有一个方便的工具可以节省大量时间

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

您只需输入表格名称、字段名称和数据 - 选项卡分隔并点击执行!

于 2014-08-27T08:09:17.963 回答
31

您可以通过 Management Studio 界面创建适当的表,并将数据插入到表中,如下所示。根据数据量,可能需要一些时间,但它非常方便。

在此处输入图像描述

在此处输入图像描述

于 2013-05-29T16:54:24.690 回答
18

您可以使用以下 excel 语句:

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

这改进了 Hart CO 的答案,因为它考虑了列名并消除了由于列中的引号引起的编译错误。最后一列是数值列的示例,不带引号。

于 2017-07-07T10:23:39.813 回答
5

根据数据库,您可以导出为 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

于 2013-05-29T16:06:48.537 回答
2

您可以使用 VB 编写将逐行输出到文件的内容,并在数据周围添加适当的 sql 语句。我以前做过。

于 2013-05-29T16:26:18.137 回答
2

使用PowerShell 库中ConvertFrom-ExcelToSQLInsertImportExcel

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
EXAMPLE
    ConvertFrom-ExcelToSQLInsert MyTable .\testSQLGen.xlsx
于 2018-03-23T11:07:54.773 回答
1

这是另一个运行良好的工具...

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

它可以采用制表符分隔的值并生成一个 INSERT 脚本。只需复制并粘贴,然后在步骤 2 下的选项中选中“第一行是列名”框

然后向下滚动并在第 3 步下,在“Schema.Table or View Name:”框中输入您的表名

还要注意删除和创建表复选框,并确保在运行之前检查生成的脚本。

这是我发现的最快、最可靠的方法。

于 2016-06-22T19:41:43.440 回答
0

这是一个在线自动机的链接,用于将 CSV 文件转换为 SQL Insert Into 语句:

CSV 到 SQL

于 2016-09-16T04:49:55.520 回答
0

我为将 Excel 文件数据插入数据库而生成的此查询在此 id 和 price 中也是数值和日期字段。这个查询总结了我需要的所有类型它也可能对你有用

="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
于 2017-01-10T06:38:39.893 回答
0

我不得不经常制作 SQL 脚本并将它们添加到源代码控制中并将它们发送给 DBA。我从 Windows 商店https://www.microsoft.com/store/apps/9NH0W51XXQRM使用了这个 ExcelIntoSQL 应用程序 它使用“CREATE TABLE”和 INSERTS 创建了完整的脚本。

于 2017-05-09T13:40:04.610 回答
0

您可以使用以下 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();}
于 2018-05-25T11:24:59.687 回答
0

我有一个可靠的方法来生成 SQL 插入,并且您可以在处理中修改部分参数。它对我的工作有很大帮助,例如,将数百个数据复制到结构和字段数不兼容的数据库中。 IntellIJ DataGrip,我使用的强大工具。DG 可以按列或行从 WPS office 或 MS Excel 接收数据。复制后,DG 可以将数据导出为 SQL 插入

于 2019-05-31T07:43:47.127 回答
0

也许最快的方法是使用在线工具,像这样将 Excel 转换为插入 SQL

只需粘贴(从 Microsoft Excel、Google Sheets、Mac Numbers 或网页复制表格)或将 Excel 拖放到Data Source的文本区域中,它就会立即执行转换的魔力。

在此处输入图像描述

于 2021-12-08T07:48:36.390 回答