我需要将 Excel 电子表格中的数据导入 SQL Server 2008。88 列和大约 5000 行。
各种隐藏的字符似乎正在引起问题。
我没有Excel的经验。我读到 CLEAN(A1) 将从单元格中删除所有非打印字符。
如何从整个电子表格中删除非打印字符?
当我将某些数据导入 SQL Server 时,是否会 CLEAN 删除出现在某些数据周围的双引号(这些在电子表格中不可见)。这些似乎会引起问题。在 SQL Server 中,您会在字段的开头看到一个双引号,但数据被截断等。
我需要将 Excel 电子表格中的数据导入 SQL Server 2008。88 列和大约 5000 行。
各种隐藏的字符似乎正在引起问题。
我没有Excel的经验。我读到 CLEAN(A1) 将从单元格中删除所有非打印字符。
如何从整个电子表格中删除非打印字符?
当我将某些数据导入 SQL Server 时,是否会 CLEAN 删除出现在某些数据周围的双引号(这些在电子表格中不可见)。这些似乎会引起问题。在 SQL Server 中,您会在字段的开头看到一个双引号,但数据被截断等。
CLEAN
删除 ASCII 代码 1 到 32 的非打印字符。值得尝试导入一个CLEAN'ed
您知道有隐藏字符的小型测试数据集,以查看这些字符是否是问题的根源。
应用于CLEAN
整个工作表的最简单方法是在工作簿中插入一个额外的工作表,输入=CLEAN(Sheet1!A1)
新工作表的单元格 A1,然后将公式向下和交叉复制以转换原始工作表中的所有数据单元格。
另一种选择是将数据表保存为 PRN、TXT 或 CSV 文件(这也将消除非打印字符),然后尝试将新文件或其测试版本导入数据库。毫无疑问,这些文件类型是您使用Save As
而不是Save
保存工作表时“另存为类型”下拉菜单中的选项。
最后,如果您仍然遇到问题 - 或者只是想跳入追逐 - 以下过程会删除除“键盘”字符(Asc 33-126)之外的所有内容并将结果写入另一张表。您将需要调整源工作表和范围的名称以及目标工作表的名称。
Sub CleanHighChars()
Dim srcRng As Range, destRng As Range
Dim strArray As Variant
Dim i As Long, j As Long, k As Long
Dim numRows As Long, numCols As Long
Dim ascNum As Long
Dim str As String, newStr As String, char As String
' // Source sheet and range
Set srcRng = Worksheets("Sheet1").Range("A1:A100")
numRows = srcRng.Rows.Count
numCols = srcRng.Columns.Count
' // Destination sheet
With Worksheets("Sheet2")
Set destRng = .Range(.Cells(1, 1), .Cells(numRows, numCols))
End With
strArray = srcRng
For i = 1 To numRows
For j = 1 To numCols
str = strArray(i, j)
For k = 1 To Len(str)
char = Mid(str, k, 1)
ascNum = Asc(char)
If ascNum > 32 And ascNum < 127 Then
newStr = newStr & char
End If
Next k
strArray(i, j) = newStr
newStr = vbNullString
Next j
Next i
destRng = strArray
End Sub