2017-10-18 8 views
0

Je tente d'insérer des données dans un champ varchar (max) du serveur sql et de conserver les sauts de ligne. Ce sont des adresses et les sauts de ligne seront essentiels pour analyser les données d'adresse. Je courais la sortie dans une fenêtre pour voir quels sont les résultats et les sauts de ligne sont maintenus dans la ligne de commande, mais pas insérer dans SQL ServerConserver CR LF (nouvelles lignes) lors de l'insertion dans SQL Server

for dirpath, subdirs, files in os.walk(process): 
    for file in files: 
     dateadded = datetime.datetime.now() 
     if file.endswith(('.dbf', '.DBF')): 
      dbflocation = os.path.abspath(os.path.join(dirpath, file)).lower() 
      if dbflocation.__contains__("\\xxx.dbf"): 
       table = DBF(dbflocation, lowernames=True, char_decode_errors='ignore') 
       for record in table.records or table.deleted: 
        rec1 = record['key1'] 
        rec2 = str(record['xxx1']) 
        rec3 = str(record['xxx2']) 
        rec4 = record['xxx3'] 
        rec5 = str(record['xxx4']) 
        rec6 = record['address1'] #address to parse 
        # if table.delete == True: 
        # rec42 = 1 
        cursor.execute(
         "insert into tblepiqclaims(key1,xxx1,xxx2,xxx3,xxx4,address1) values(?,?,?,?,?,?)", 
         rec1, rec2, rec3, rec4, rec5, rec6) 
        print rec6 
      cnxn.commit() 
+1

Si vous inspectez la table en l'ouvrant dans SQL Server Management Studio (SSMS) alors cela peut vous tromper. SSMS n'affiche pas les sauts de ligne dans une vue Grid standard. Vous pouvez utiliser 'CONVERT (VARBINARY, address1)' pour voir si la valeur contient '0D0A' (pour VARCHAR) ou' 0D000A00' (pour NVARCHAR) pour vérifier que les sauts de ligne CR_LF sont vraiment là. –

Répondre

0

Vous devez définir le caractère d'échappement dans le champ varchar.

par exemple:

entrée

= '1 # 2 # 3'

print input.split ('#')