0

我只是似乎没有解决我的问题!我需要将其导入 SQL Server。

.CSV MySQL 导出的第二列(以及更多列)包含我需要转换的 tstamp 字段。我创建了表,但批量导入不起作用。收到以下错误消息 Msg 4864, Level 16, State 1, Line 4 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 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
4

3 回答 3

0

尝试检查加载数据: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);
于 2012-04-04T09:13:43.957 回答
0

问题是,您在 tstamp 和 tstamp_updated 列中有值“0”,它们的数据类型为时间戳,对吧?

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

于 2012-04-04T10:02:16.310 回答
0

如何创建一个 SSIS 包来做到这一点?

链接可能对您有所帮助

于 2012-04-04T09:42:07.630 回答