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

mysqlロードデータローカルinfile構文の問題と設定フィールド

    これを機能させるための適切な構文を理解しました:

    sql = """LOAD DATA LOCAL INFILE %s INTO TABLE seriallog_dev 
             FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' 
             LINES TERMINATED BY '\\n' 
             IGNORE 1 LINES 
             (FLEX_PN, FLEX_PLANT, FLEX_ORDID, FLEX_REV, CUST_PN, CUST_REV, SERIALID, @DTE, @LTME) 
             SET RECORDID = NULL, 
                 TRANS_OCR = STR_TO_DATE(CONCAT(@DTE,'',@LTME), "%%Y%%m%%d%%H%%i%%s"), 
                 CREATED = CURRENT_TIMESTAMP;"""
    
    params = (file,)
    self.db.query( sql, params )
    

    気をつけてください-これはPythonのmysqldbモジュールで行われます。

    警告

    このソリューションの唯一の問題は、何らかの理由で、一括挿入ではファイルの最初の217行のデータしか挿入されないことです。私の合計ファイルサイズは19KBなので、mysqlバッファには大きすぎるとは想像できません...では、何が得られますか?

    詳細

    また、この構文をmsyql-server CLI内で直接試したところ、255レコードすべてで機能します。したがって、明らかに、Python、Python mysqldbモジュール、またはmysqldbモジュールが作成するmysql接続に問題があります...

    完了

    私は問題を理解しただけで、load data local infileコマンドとは関係がなく、.csvをインポートする前に元の.dbfファイルを.csvに変換するために使用していた方法とは関係ありませんでした。何らかの理由で、.dbfから.csvへの変換メソッドが終了する前にmysqlインポートメソッドが.csvで実行されていたため、.csvファイルで部分的なデータセットが検出されてインポ​​ートされました...皆さんの時間を無駄にして申し訳ありません!




    1. Apache2、PHP5、およびMySQL4を使用してWindows XPにWebサーバーをインストールする–パート4

    2. 同じ値を持つ行の数を数える

    3. MySQLで小文字を含む行を見つける3つの方法

    4. 列から大文字の単語を検索するSQL