从excel工作表生成sql插入脚本

时间:2013-05-29 16:04:08

标签: sql excel

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

我可以从这个excel工作表生成SQL插入脚本吗?

14 个答案:

答案 0 :(得分:179)

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

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

在MS SQL中,您可以使用:

SET NOCOUNT ON

放弃显示所有“受影响的1行”评论。如果你正在做很多行并且它出错了,那么偶尔在语句之间放一个GO

答案 1 :(得分:27)

您可以通过管理工作室界面创建一个合适的表,并将数据插入表中,如下所示。这可能需要一些时间,具体取决于数据量,但它非常方便。

enter image description here

enter image description here

答案 2 :(得分:25)

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

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

您只需要输入表格名称,字段名称和数据 - 分隔符,然后点击Go!

答案 3 :(得分:7)

您可以使用以下excel语句:

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

这比Hart CO的答案更好,因为它考虑了列名并且由于列中的引号而消除了编译错误。最后一列是数值列的示例,没有引号。

答案 4 :(得分:4)

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

答案 5 :(得分:2)

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

答案 6 :(得分:1)

这是另一种效果很好的工具......

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

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

然后在步骤3下向下滚动并,在框中输入您的表格名称" Schema.Table或查看名称:"

同时注意delete和create table复选框,并确保在运行之前检查生成的脚本。

这是我发现的最快,最可靠的方式。

答案 7 :(得分:1)

有些工具可以在线转换文件,但要注意使用哪些文件 - 有些会将转换后的文件发布到网上。

SQLizer.io是一种SQL工具,不会存储您的数据或将其发布到网络上的任何位置。

答案 8 :(得分:0)

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

CSV-to-SQL

答案 9 :(得分:0)

我已经生成了用于将Excel文件数据插入数据库的查询 在此ID和价格中也是数值和日期字段。此查询汇总了我需要的所有类型它也可能对您有用

var tabid = jQuery("#tabs > .uol > li > a[dataa='" + date + "']").attr('href');
      alert(tabid);

答案 10 :(得分:0)

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

答案 11 :(得分:0)

使用PowerShell Gallery中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

答案 12 :(得分: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();}

答案 13 :(得分:0)

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