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

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

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

568835 次浏览

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

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

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

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

在 MS SQL 中,您可以使用:

SET NOCOUNT ON

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

您可以通过 Management Studio 接口创建一个适当的表,并向表中插入数据,如下所示。根据数据量的不同,这可能需要一些时间,但它非常方便。

enter image description here

enter image description here

有一个方便的工具可以节省很多时间

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

您只需要输入表名、字段名和分隔的数据选项卡,然后单击 Go!

这是另一个非常好用的工具..。

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

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

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

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

这是我找到的最快最可靠的方法。

下面是一个指向联机自动机的链接,它可以将 CSV 文件转换为 SQLInsertInto 语句:

CSV-to-SQL

我为将 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

我必须经常编写 SQL 脚本,并将它们添加到源代码控制中,然后将它们发送给 DBA。 我使用这个来自 Windows 商店 https://www.microsoft.com/store/apps/9NH0W51XXQRM的 ExcelIntoSQL 应用程序 它使用“ CREATETABLE”和 INSERTS 创建完整的脚本。

可以使用以下 excel 语句:

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

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

在 PowerShell 图库中使用来自 Import ExcelConvertFrom-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
EXAMPLE
ConvertFrom-ExcelToSQLInsert MyTable .\testSQLGen.xlsx

您可以使用下面的 C # 方法使用 Excel 表生成插入脚本,只需要在执行该方法之前从 NuGet Package Manager 导入 OfficeOpenXml Package 即可。

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 插入大量,你可以在处理中修改部分参数。它对我的工作很有帮助,例如,复制一百个数据到数据库不兼容的结构和字段计数。 这是我使用的强大工具。 DG 可以通过列或行的方式从 WPS 办公室或 MSExcel 接收数据。 复制后,DG 可以将数据导出为 SQL 插入

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

只需要粘贴(从 Microsoft Excel、 Google Sheets、 Mac Number 或者网页上复制表格)或者将你的 Excel 拖放到 资料来源的文本区域,它就会立即执行转换的魔法。

enter image description here