2012-04-04 49 views
0

我只是似乎没有得到解决我的问题!我需要将其导入到SQL Server中。创建一个SQL表导入(并转换).CSV包含MySQL tstamp

.CSV MySQL导出的第二列(以及更多)包含我需要转换的tstamp字段。 我创建了表格,但批量导入不起作用。得到以下错误信息 Msg 4864,Level 16,State 1,Line 4 行2列1(tstamp)的批量加载数据转换错误(类型不匹配或指定代码页的字符无效)。 消息4864,级别16,状态1,行4 第3行第1列(tstamp)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。

这里的代码。

-- Recreate the table 
CREATE TABLE [Majestic].[dbo].hdiyouth 
(tstamp datetime NOT NULL 
) 
GO 

-- Bulk insert the data from csv file 
-- Ensure the file(s) is/are closed! 
BULK 
INSERT [Majestic].[dbo].hdiyouth 
FROM 'C:\Path\CSV\hdiyouth.csv' 
WITH 
(
FIRSTROW = 2, 
FIELDTERMINATOR = ';', 
ROWTERMINATOR = '\n' 
) 
GO 
+0

CSV数据的示例? – 2012-04-04 08:57:00

+0

。由此样品 > ID; “TSTAMP”; “tstamp_updated”; “REG_ID” > 24173; “0”, “0”, “1272167 > 24175;” 1319210236 “” 0 “” 1272167" > 24177;“0”;“0”;“1272173” > 24179;“1319210739”;“0”;“1272173”; > 24181;“0”;“0”;“1272175”; – hermanvn 2012-04-04 09:07:25

+0

我相信datetime接受日期和时间在“YYYY-MM-DD HH:MM:SS”格式中,尝试声明tstamp字段是一个整数或时间戳 – 2012-04-04 09:17:17

回答

0

尝试检查出LOAD DATA:在插入之前http://dev.mysql.com/doc/refman/5.1/en/load-data.html

有点那里是如何将列转换的例子:

mysql> LOAD DATA INFILE '/tmp/bit_test.txt' 
    -> INTO TABLE bit_test (@var1) SET b= CAST(@var1 AS UNSIGNED); 
+0

嗨, 我不认为我提到过它,但我想将它导入到SQL中。 – hermanvn 2012-04-04 09:15:31

0

如何创建一个SSIS包做?

link可以帮助你

+0

这是SQL 2005的免费版本吗?也许在2008年的免费版本? 我在想BIDS模块只能在完整版本中使用? – hermanvn 2012-04-04 10:20:27

+0

如果您已安装SQL 2005快速版并希望安装BIDS(商业智能开发工作室),请转至此处http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=19413 – Diego 2012-04-04 10:22:44

+0

谢谢,我会放手一搏! – hermanvn 2012-04-04 10:33:13

0

的问题是,你有在TSTAMP和tstamp_updated列中的值“0”,这是数据类型时间戳的,对不对?

MySQL支持timestamp列中的NULL值,也表示为'0000-00-00 00:00:00'。 SQL Server不支持这一点。不要误解我的意思,它支持timestamp列中的NULL值,但不支持MySQL的'0'。解决这个问题的最简单方法可能是使用SSIS,如迭戈建议。我个人通过将MySQL NULL值转换为'1970-01-01'来解决这个问题,这是时间戳列的最小值。