sql >> データベース >  >> RDS >> Sqlserver

BULK INSERT を使用して SQL Server に空の文字列を挿入する

    私の知る限り、一括挿入では空の文字列を挿入できません。null 値を保持するか、keepnulls オプションを使用するか keepnulls オプションを使用せずにデフォルト値を使用できます。 3 つのサンプル レコードの場合、データベースを挿入すると、次のようになります。

    <プレ> | ID |名前 | 1 |ヌル | 1 | "" | 1 | ''

    その理由は、一括挿入では最初の行、2 番目の列の値が null として扱われるためです。他の 2 行については、2 番目の列の値を null ではないと見なし、そのまま受け取ります。

    Bulk Insert で空の文字列値を挿入する代わりに、テーブルの列にデフォルト値を空の文字列として挿入することができます。

    以下の例:

    
    CREATE TABLE BulkInsertTest (id int, name varchar(10) DEFAULT '')
     
    同じCSVファイルをテーブルに一括挿入
    BULK INSERT Adventure.dbo.BulkInsertTest
       FROM '....\test.csv'
       WITH 
          (
             FIELDTERMINATOR ='\,',
             ROWTERMINATOR ='\n'
          )
       SELECT * FROM BulkInsertTest
     

    結果は次のようになります:(CSV の最初の行は空の文字列になります)

    <プレ> | ID |名前 | 1 | | | 1 | "" | 1 | ''

    1. 致命的なエラー:mysqldをrootとして実行する方法については、マニュアルの「セキュリティ」セクションをお読みください。

    2. 大きなテーブル(7500万行以上)での単純なmysqlselectの最適化

    3. PostgreSQLでnextvalをグローバルに再定義するにはどうすればよいですか?

    4. OracleのSIGN()関数