我有一个大型的Excel工作表,想要将其添加到我的数据库中。
我是否可以从这个Excel工作表生成一个SQL插入脚本?
我有一个大型的Excel工作表,想要将其添加到我的数据库中。
我是否可以从这个Excel工作表生成一个SQL插入脚本?
如果确实是一个大文件,我认为使用提到的方法之一进行导入是理想的,但您可以使用Excel创建插入语句:
="INSERT INTO table_name VALUES('"&A1&"','"&B1&"','"&C1&"')"
在 MS SQL 中,您可以使用:
SET NOCOUNT ON
放弃显示所有的“1 行受影响”的注释。如果您正在处理大量行并且出现错误,请在语句之间偶尔放置一个 GO。
答案: 放弃显示所有的“1 行受影响”的注释。如果您正在处理大量行并且出现错误,请在语句之间偶尔放置一个 GO。
=CONCATENATE()
,ن½†وک¯ن½؟用&
符هڈ·هڈ¯ن»¥è®©ه†…ه®¹و›´وک“读ï¼پ - mastaziCONCATENATE()
参数限制时已经转换为 &
了,现在由于参数限制为255个而不再是常见问题,但我从来没有想过要恢复。 - Hart CO="INSERT INTO table_name(`"&$A$1&"`,`"&$B$1&"`,`"&$C$1&"`, `"&$D$1&"`) VALUES('"&SUBSTITUTE(A2, "'", "\'")&"','"&SUBSTITUTE(B2, "'", "\'")&"','"&SUBSTITUTE(C2, "'", "\'")&"', "&D2&");"
这个方案比Hart CO的回答更好,因为它考虑了列名并且消除了由于列中引号导致的编译错误。最后一列是一个数值列的示例,不需要引号。
ConvertFrom-ExcelToSQLInsert
将Excel转换为SQL插入语句。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
你可以使用VB编写一些内容,逐行输出到文件中,在你的数据周围添加适当的SQL语句。我之前已经做过了。
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();}
http://www.convertcsv.com/csv-to-sql.htm
它可以接受制表符分隔的值并生成插入脚本。只需复制并粘贴,在选项的步骤2下,勾选“第一行是列名”复选框然后向下滚动,在步骤3下,在“模式.表或视图名称:”框中输入您的表名
还要注意删除和创建表复选框,并确保在运行之前检查生成的脚本。
这是我找到的最快最可靠的方法。