0

私は自分の問題の解決策が得られないようです!これをSQLServerにインポートする必要があります。

.CSV MySQLエクスポートの2番目の列(およびそれ以上)には、変換が必要なtstampフィールドが含まれています。テーブルを作成しましたが、一括インポートが機能しませんでした。次のエラーメッセージメッセージ4864、レベル16、状態1、行4のバルクロードデータ変換エラー(指定されたコードページのタイプの不一致または無効な文字)が行2、列1(スタンプ)に表示されました。メッセージ4864、レベル16、状態1、行4行3、列1(スタンプ)のバルクロードデータ変換エラー(指定されたコードページのタイプの不一致または無効な文字)。

これでコード。

-- 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

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);
于 2012-04-04T09:13:43.957 に答える
0

それを行うために SSIS パッケージを作成するのはどうですか?

このリンクはあなたを助けるかもしれません

于 2012-04-04T09:42:07.630 に答える
0

問題は、tstamp 列と tstamp_updated 列に値 "0" があることです。これらはタイムスタンプ データ型ですよね?

MySQL は、'0000-00-00 00:00:00' で表されるタイムスタンプ列の NULL 値をサポートしています。SQL Server はこれをサポートしていません。誤解しないでください。タイムスタンプ列の NULL 値はサポートされていますが、MySQL の「0」はサポートされていません。これを解決する最も簡単な方法は、Diego が提案したように SSIS を使用することです。個人的には、MySQL NULL 値をタイムスタンプ列の最小値である「1970-01-01」に変換することで、この問題を解決しました。

于 2012-04-04T10:02:16.310 に答える