小编典典

将Excel工作表转换为sql脚本

sql

我有一个Excel工作表(.xls)。我需要将其转换为sql脚本。单个excel工作表包含多个表。因此,生成的脚本应具有多个create
table和insert语句。我尝试了各种工具,例如http://www.sqlconverter.com/,但无法获得适当的解决方案。还有其他方法可以做到吗?


阅读 277

收藏
2021-03-17

共1个答案

小编典典

我注意到您的评论,即使用导入向导比您想要的解决方案更为复杂,因此您必须尝试加载数据。

您可以尝试BULK INSERT

首先,在每张纸上进行“另存为”,然后将它们转换为CSV文件。您要导入的每张图纸都应该有一个CSV文件。

接下来,创建一个具有与您将要引入的数据类型和长度相似的表。一个典型的Excel单元格是VARCHAR(255),(如果想具体说明,则可能更像是NVARCHAR(255),但是我们将避免为此解决方案使用unicode)。

因此,如果您的Excel工作表有5列:

CREATE TABLE Sheet1
(Column1 VARCHAR(255)
, Column2 VARCHAR(255)
, Column3 VARCHAR(255)
, Column4 VARCHAR(255)
, Column5 VARCHAR(255)
)

然后,您可以将简单的批量插入操作写入表中,前提是该文件位于网络共享上,或者位于SQL实例所在的服务器/计算机本地。例如,如果您的计算机上有该文件,并且想尝试将其推送到网络上的服务器,则SQL会认为C:\以下脚本中的是在服务器上而不是您的计算机上。您将必须共享一个文件夹并通过网络访问它:\\MyMachineName\SharedFolder\Sheet1.csv

BULK INSERT dbo.Sheet1
FROM 'C:\LocalFolder\WhereTheFileIs\Sheet1.csv'
WITH (
FIELDTERMINATOR = ','
, ROWTERMINATOR = '\n'
)

如果文件和表中存在相同数量的列,则应该将数据放入该表中。

它不漂亮,但很简单。这BULK INSERT是基本且快速加载的可靠方法。

2021-03-17