最近写了点脚本,对涉及的一点类型转换做个总结。由于数据是从CSV文件中读取的,也就是用逗号(,)分割的文件类型,可以用EXcel打开,也可用文本文档打开,都没有什么关心,
- 文件的读取。
*.CSV文件都是有*.INI文件的对应的内容的。
[<filename>.CSV]
ColNameHeader = False //是否读取列名
Format = CSVDelimited
CharacterSet = ANSI
Col1=reference TEXT width 200
Col2=***** TEXT width 200
由于开始不知道具体文件类型大小,都列成了nvchar的,所以对所要导入的数据库中的float,datetime还有50个大小的都要处理。
Code
/*
*{0} folder path
*{1}file name
*/
insert into table
SELECT * FROM
OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DEFAULTDIR={0};Extensions=CSV;',
'SELECT * FROM "{1}.CSV"')
/*
*{0} folder path
*{1}file name
*/
insert into table
SELECT * FROM
OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DEFAULTDIR={0};Extensions=CSV;',
'SELECT * FROM "{1}.CSV"')
- nvchar200到50 的读取,去掉第一个空格,然后读取前面的50
Code
LEFT(LTRIM(T.Reference),50) AS reference,
LEFT(LTRIM(T.Reference),50) AS reference,
- 对ddmmyy的nvchar转换成datetime
T.date就是nvchar200的ddmmyy类型。
Code
Case when T.Date is not null
Then cast(substring(T.Date,5,4)+substring(T.Date,3,2)+substring(T.Date,1,2) as DateTime)
Else null
END
Case when T.Date is not null
Then cast(substring(T.Date,5,4)+substring(T.Date,3,2)+substring(T.Date,1,2) as DateTime)
Else null
END
- 对float的转换
Code
CAST(S.price AS float),
CAST(S.price AS float),