2014-11-05 30 views
1

我们尝试导入CSV文件,其中第一列中有这样SQL导入/创建SMILE化学结构列

c1cccc(c12)n(C)c(c2)CN(C)C(=O)c(c3)ccc(c34)NCC(=O)N(C4)C,14-BENZODIAZEPINEDERIV.4_145,1 
c1cccc(c12)n(C)c(c2)CN(C)C(=O)c(c3)ccc(c34)N[[email protected]](C(=O)N(C4)C)CC(=O)OC,14-BENZODIAZEPINEDERIV.3_146,1 

化学结构(笑)这是在SQL

--Define Table 
CREATE TABLE Amide_actives_test 
(Structure VARCHAR(40), 
Name VARCHAR(40), 
Active INT) 
GO 

--Import Data from CSV 

BULK 
INSERT Amide_actives_test 
FROM 'C:\Amide_actives.csv' 
WITH 
(
FIELDTERMINATOR = ',', --CSV field delimiter 
ROWTERMINATOR = '\n' --Use to shift the control to next row 
) 
GO 
--Check the content of the table 
SELECT * FROM Amide_actives_test 
GO  
代码

以下错误消息将弹出:

Bulk load data conversion error (truncation) for row 1, column 1 (Name). 
Msg 4863, Level 16, State 1, Line 10 
...repeating the previous 2 lines 10 times.... 
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error. 
Msg 7330, Level 16, State 2, Line 10 
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)". 

显然有阅读牛逼SQL的问题他是“Structure VARCHAR(40)”中的第一列。我已经尝试过所有的字符串类型(CHAR,VARCHAR.NCHAR,NVARCHAR,NTEXT,TEXT),并且它们都不起作用。

http://msdn.microsoft.com/en-us/library/ff848814.aspx

有解决这个问题的方法之一是从日光另购定制的MySQL模块。然而,1。它的成本2.不支持SQL

http://www.daylight.com/dayhtml/doc/pgsql/daycart_pg_search.html

我想知道如果任何SQL大师有SQL的解决方案?谢谢!

+0

“结构”和“名称”的列定义长度为40个字符(“VARCHAR(40)”),但第一行的“结构”列中的数据长度为56,甚至更长的第二行 - 因此截断错误。尝试将两个列重新定义为“NVARCHAR(255)”。 – Turophile 2014-11-05 02:18:00

回答

2

第一个问题是Structure VARCHAR(40)varchar length小于输入,所以你得到trucation error。尝试增加varchar length并检查

+0

谢谢。有用。 – Chubaka 2014-11-05 04:24:54