我有一个像这样的CSV数据表:
a | b | c | d | f
1: 12 Dave Larry $1234.0 FALSE
2: 324.0 Bob Gray $24.012 TRUE
3: 2000 John Stan $204.0
4: 9000 Stace Jill - FALSE
5: 850.0 Till $30 TRUE
用户评论等字段会包含逗号,因此可以通过单引号或双引号进行转义。 Excel打开这些就好了,可以在导入之前用于清理或操作数据。
从迁移的角度来看,对我来说最简单的事情就是首先将数据作为varchars引入SQL Server,然后使用SQL将数据操作为目标目标格式。
我遇到了以下问题:
1)尝试导入CSV可能会导致问题。 SQL Server Management Studio的导入需要严格格式化的CSV,这意味着像注释列或文本中格式化为货币的数字可能导致导入失败。
2)将CSV保存为XLS时,SQL Server Management Studio似乎仍然试图成为智能"关于它如何解释数据,无论它是否被格式化。有时,即使您需要,也无法将数据转换为nvarchar或varchar,因为导入实用程序已假定数据为数字。制表符分隔可能最终无法正常工作,尤其是对于用户评论等内容。
将CSV导入SQL Server的无错误方法是什么,使所有列都为varchar或nvarchar?
答案 0 :(得分:0)
一种解决方案是使用数据 - >文本到列,分隔,然后不选择任何分隔符。但是,Excel只允许您一次执行此列。但是,这个XLS读入SQL Server就像所有nvarchars一样。
进一步修改此解决方案,您可以创建以下宏,将其保存到PERSONAL.XLSB中,以便在将来的所有工作表中都可用。通过将此宏映射到组合键,您可以选择一个单元格,然后宏将选择该列,然后为您运行text to columns函数:
Sub ColumnToNVarChar()
'
' ColumnToNVarChar Macro
' Convert a column in Excel to a format that SQL Server Management Studio's import process will interpret as nvarchar.
'
' Keyboard Shortcut: Ctrl+d
'
ActiveCell.EntireColumn.Select
Selection.TextToColumns Destination:=ActiveCell.EntireColumn, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
End Sub
然后将其保存为XLS文件和SQL Server Management Studio"导入数据" process会将每列视为nvarchar。通常是nvarchar(255)。